1. 基本语法

    select [distinct] [顶部条数| 聚合函数] 字段集合|常量|表达式|函数|*
    from  表名
    [where 查询条件语句集合]
    [group by 分组字段列表]
    [having 过滤条件语句集合]    分组查询条件
    [order by 排序字段集合 [asc | desc]]
    [LIMIT [<offset>,] <row count>]
  2. 查询全部字段数据(*)

    select * from 表名 ;
    • 在实际项目中,强烈不建议使用 * 作为返回结果,影响性能。测试时可以使用
  3. 局部字段查询

    select 字段1,...,字段n from 表名 ;
  4. 正则查询

    # regexp 关键字
    # 正则表达式外必须用 '' 包括
    ... where 字段 regexp  '正则表达式 ...'
  5. 别名( as)

    # 为字段指定别名
    select 字段 [as] 别名   ...
    
    # 为表名指定别名
    select *|字段集合 from 表名 as 别名
  6. 字符连接(+)

    # 注:在MySQL中,+表示的是运算符,不能用于字符串连接
    select 1 + 1;
    
    # 把字符尝试转换为数值,如果转换成功,则得到对应的数值,如果转换失败,则为0
    select 1 + '1' ;    
    select 1 + '你' ;
    
    # null + 任何数据 = null
    select 1 + null ;
    
    # 实现字符连接,可以使用concat函数
  7. 排序

    # 单字段排序,默认为ASC
    order by 字段 ASC | DESC
    
    # 多字段排序
    # 注意:在对多个字段进行排序时,排序的第一个字段必须有相同的值,才会对第二个字段进行排序。如果第一个字段数据中所有的值都是唯一的,MySQL 将不再对第二个字段进行排序。
    order by 字段1 ASC | DESC,字段2 ASC | DESC
  8. 聚合函数(分组函数)

    • sum() : 求和
    • avg() : 平均值
    • max() : 最大值
    • min() : 最小值
    • count() : 记录数

      • count(*):统计所有字段
      • count(字段):不统计NULL值

注意:

    • 也叫分组函数,一般用于分组查询
    • 以上五个分组函数都忽略null值,除了count(*);
    • sum和avg一般用于处理数值型,max、min、count可以处理任何数据类型;
    • 如果count字段,则字段值为NULL的情况,将忽略统计
    1. 分组查询

      分组查询的操作步骤:

      1. 先分组 -- 分组的字段
      2. 后统计(聚合函数)
      select 字段,聚合函数 
      from 表名 
      group by 字段 
      【WITH ROLLUP】
      having 条件

    select后面跟着的字段必须满足两个条件

    • 必须跟分组的字段 || 使用了聚合函数的字段

    having 条件

    • where是分组前条件,having是分组后条件。
    1. 分页查询

      select * from  表名 limit (当前页-1) * 每页记录数,每页记录数
    2. 去重

      # distinct关键字给筛选掉重复的字段值
      select distinct 字段 from 表名
    3. case then 语句的使用

      CREATE TABLE test_user 
      (
            id int primary key auto_increment ,
            name varchar(50) not null ,
            gender tinyint default 1 ,
            country_code smallint
      ) engine=InnoDb default charset=utf8;
      
      insert into test_user(name,gender,country_code) values ('清风',1,100) ;
      insert into test_user(name,gender,country_code) values ('玄武',2,100) ;
      insert into test_user(name,gender,country_code) values ('Kobe',1,110) ;
      insert into test_user(name,gender,country_code) values ('John Snow',1,200) ;
      
      
      
      select id,name,gender,
          (
          case gender 
              when 1 then '男' 
              when 2 then '女'
              else '未知'
             end
        ) 性别,
          country_code 
      from test_user;
    最后修改:2023 年 01 月 31 日
    如果觉得我的文章对你有用,请随意赞赏