当前位置: 首页 > news >正文

SQL - 查询

  • 查询语句
    • select子句和from子句,其他子句用于数据的筛选和排序,如where, order by,limit等。
    • 子句书写的顺序是有影响的,不能改变这些句子的顺序,不然会出现语法错误。如,select,from,where,order by,limit.
    • 子句执行顺序:from-->join-->on-->where-->group by-->having-->select-->distinct-->order by-->limit
    • select子句
      • select * //返回所有列,会增加用增加服务器和网络的那么大负担
      • select first_name,last_name //获取指定的列,获得的列的顺序和自己写的顺序相同,当然列中数据可能会有重复的。
      • select (points+10)*100 //可以获得在原有的数据上的运算,就是算数表达式,支持 + - * / %运算。
      • select (points+10)*100 as discount_fact //对于一个结果集(表达式),想要一个清晰的描述性名称,使用 AS 关键字,如果这个名字含空格,需要引号包起来。
      • select distinct state //获取列的唯一值,也就是 distinct关键字 对列的值有去重作用
      • as 关键字:可以为表达式起别名,也可以将查询的列重新命名
    • where子句(筛选数据)
      • where子句就是对一些字段进行条件限制,如果每行记录的字段符合条件,那么就返回该行记录所要查询的列。在执行查询时,MySQL中的查询执行引擎会遍历表中的每一行信息,评估这个where条件,如果条件正确,会在结果集返回这行信息。
      • 运算符
        • 比较运算符
          • >, >=, <, <=, =, !=, <>,是逻辑判断
        • and、or、not 运算符
          • 在筛选数据时结合多条搜索条件
        • in 运算符
          • 在多个同一列值中 判断一个字段,就可以使用 in 或者not in
          • 如 where quantity_in_stock in (49,38,72)
        • between 运算符
          • 当将一个字段在和一个范围值相比较时可以使用
          • 如 where points between 1000 and 3000
        • like 运算符
          • 检索遵循特定字符串模式的记录,可以使用like ,not like
          • %,表示任意长度的字符,可以表示0个
          • 如 where last_name like '%b%'
          • _,下划线表示一个任意的单字符
          • 如where last_name like '__h',两个字符的姓
        • regexp 运算符(正则表达式)
          • 跟like的作用相同,但是不一样的格式,
          • 如 where address regexp 'trail$',表示address的形式必须是以'trail'为末尾
          • 如 where address regexp 'trail|avenue|rose',表示address中包含'trail'或者'avenue'或者'rose'
          • 如 where address regexp '[tkl]rail',表示address中包含 'trail',或者'krail',或者'lrail'
          • ^,代表字符串开头
          • $,代表字符串末尾
          • |,代表逻辑上的or,可以给出多个搜索模式
          • 字符串拼接
            • [],使用[]匹配任意在括号里例举的单字符,拼接字符串
            • [] 和 -,使用[]和-表示一个范围,如'[a-h]e',表示'abcdefge'
            • select *
              from customers
              -- where first_name regexp 'elka|ambur'
              -- where last_name regexp 'ey$|on$'
              -- where last_name regexp '^my|se'
              -- where last_name regexp 'b[ru]'

        • is null 运算符
          • 如何搜索缺失了属性的记录,可以使用 is null,不缺失 is not null
          • 如 where phone is null
    • order by子句
      • 如何为查询的数据进行排序
      • order by first_name //按first_name排序,默认升序
      • order by first_name desc //按first_name降序排序
      • order by status,first_name //用多列字段排序,按status升序排序的基础上,按first_name降序排序
      • select *,quantity*unit_price as total_price
        from order_items
        where order_id=2
        order by quantity*unit_price desc
    • limit 子句
      • 如何限制查询返回的记录数,用limit,limit语句的位置永远都在最后
      • limit 3 //返回前3条记录
      • limit 6,3 //跳过前6条记录,返回3条记录

http://www.mrgr.cn/news/1616.html

相关文章:

  • 基于Spring Boot的疗养院管理系统的设计与实现
  • 【JPCS出版】2024年自动化、电气控制系统与设备国际学术会议(AECSE 2024)
  • Dockerfile常用指令详解
  • telegraf、influxdb、grafana安装配置及后端监听器操作
  • Redis7基础篇(四)
  • Java-Web面试题汇总
  • Java-自定义注解(定义更复杂的自定义注解,例如带有多个成员变量的注解使用讲解)
  • 详细介绍Pytorch基于GPU训练的一般套路(device)
  • 后端开发刷题 | 反转链表【链表篇】
  • C:每日一题:双指针法的使用
  • 大语言模型 - 提示词(Prompt)工程入门
  • PostgreSQL 索引类型保姆级讲解
  • 数据库表优化实践指南
  • 【微信小程序】自定义组件 - 数据、方法和属性
  • 论文复现_主流 Linux APP 编译方式调研
  • [php:\\filter]
  • 解锁黑科技!百度AppBuilder助你秒变开发者,轻松实现文心一言
  • 指针(下)
  • playbook(剧本)
  • 企业数据库有哪些?如何利用企业数据库进行客户分级管理?