MySQL高级查询( 三 )

  • group_concat(字段名)函数是统计每个分组指定字段的信息集合
  • 聚合函数在和group by 结合使用时,聚合函数统计和计算的是每个分组的数据
  • having 是对分组数据进行条件过滤
  • with rollup 在最后记录后面新增一行,显示select查询时聚合函数的统计和计算结果
  • 五、连接查询 
    连接查询可以实现多个表的查询,当查询的字段数据来自不同的表就可以使用连接查询来完成
    连接查询分为:
     
    1. 内连接查询
    2. 左连接查询
    3. 右连接查询
    4. 自连接查询
    1. 内连接查询 
    查询两个表中符合条件的共有记录(取交集)
    内连接查询语法格式:
     
    select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2
     
    说明:
     
    • inner join 就是内连接查询关键字
    • on 就是连接查询条件
     
    使用内连接查询学生表与班级表:
     
    select * from students s inner join classes c on s.c_id = c.id;
     
    原本两个表的内容:
    MySQL高级查询

    文章插图
     
    MySQL高级查询

    文章插图
     
    使用内连接:
    MySQL高级查询

    文章插图
     
    MySQL高级查询

    文章插图
     
    2. 左连接查询
    以左表为主根据条件查询右表数据,如果根据条件查询右表数据不存在则使用null值填充
    左连接查询语法格式:
     
    select 字段 from 表1 left join 表2 on 表1.字段1 = 表2.字段2
     
    说明:
     
    • left join 就是左连接查询关键字
    • on 就是连接查询条件
    • 表1 是左表
    • 表2 是右表
     
    使用左连接查询学生表与班级表:
     
    select * from students s left join classes c on s.c_id = c.id;
     
    MySQL高级查询

    文章插图
     
    3. 右连接查询
    以右表为主根据条件查询左表数据,如果根据条件查询左表数据不存在则使用null值填充
    右连接查询语法格式:
     
    select 字段 from 表1 right join 表2 on 表1.字段1 = 表2.字段2;
     
    说明:
     
    • right join 就是右连接查询关键字
    • on 就是连接查询条件
    • 表1 是左表
    • 表2 是右表
     
    使用右连接查询学生表与班级表:
     
    select * from students s right join classes c on s.c_id = c.id;
     
    MySQL高级查询

    文章插图
     
    MySQL高级查询

    文章插图
     
    4. 自连接查询
    左表和右表是同一个表,根据连接查询条件查询两个表中的数据
    MySQL高级查询

    文章插图
     
    创建areas表:
     
    create table areas( id varchar(20) not null primary key, title varchar(30) not null, pid varchar(20) );


    推荐阅读