MySQL进阶查询

MySQL进阶查询

  • 排序

    desc: 升序

    asc: 降序

    select * from <表的名字> order by <字段1> desc/asc;
    
  • 聚合查询

    • 查询结果的总数
    select count(*) from <表的名字>;
    
    • 查询结果的最大值
    select max(<字段>) from <表的名字> where <条件>;
    
    • 查询结果的最小值
    select min(<字段>) from <表的名字> where <条件>;
    
    • 查询结果的和
    select sum(<字段>) from <表的名字> where <条件>;
    
    • 查询结果的平均值
    select avg(<字段>) from <表的名字> where <条件>;
    
  • 分组

    • group by: 查询结果分组
    select <字段1> from <表的名字> group by <字段>;
    
    • group by + group_concat: 查询结果分组,并根据分组显示gourp_concat中字段的值,以逗号分割
    select <字段1>,group_concat(<字段2>) from <表的名字> group by <字段>;
    
    • group by + 聚合查询:

      • group by + count: 查询每个分组的数量
      select <字段1>,count(*) from <表的名字> group by <字段>;
      
      • group by + max: 查询每个分组中最大的值
      select <字段1>,max(<字段2>) from <表的名字> group by <字段>;
      
      • group by + min: 查询每个分组中最小的值
      select <字段1>,min(<字段2>) from <表的名字> group by <字段>;
      
      • group by + sum: 查询每个分组值的和
      select <字段1>,sum(<字段2>) from <表的名字> group by <字段>;
      
      • group by + avg: 查询每个分组值的和
      select <字段1>,avg(<字段2>) from <表的名字> group by <字段>;
      
      • group by + having: 对分组之后的结果集进行条件判断,having只能用于group by
      select <字段1> from <表的名字> group by <字段> having count<条件>;
      
    • group by + with rollup: 在结果的最后增加一行,记录列的总和

    select <字段1>,<字段2>.... from <表的名字> group by <字段> with rollup;
    
  • 分页查询

    • start: 开始查询的位置,从0开始

    • count: 每页显示的数据数量

    select * from <表的名字> limit start,count;
    
    • 分页公式

      m: 每页显示的个数

      n: 页数

    select * from students where is_delete=0 limit (n-1)*m,m;
    
  • 连接查询

    • 内连接查询: 查询表1,表2都能匹配到的数据
    select * from <表1的名字> inner join <表2的名字> on <表1的名字>.<表1的字段> = <表2的名字>.<表2的字段>;
    
    • 右连接查询: 查询只有表2才能匹配到的数据
    select * from <表1的名字> right join <表2的名字> on <表1的名字>.<表1的字段> = <表2的名字>.<表2的字段>;
    
    • 左连接查询: 查询只有表1才能匹配到的数据
    select * from <表1的名字> left join <表2的名字> on <表1的名字>.<表1的字段> = <表2的名字>.<表2的字段>;
    
  • 自关联 ==> (可以用来做地区的三级联动)

    select <别名1>.* from <表1的名字> as <别名1>
    inner join <表1的名字> as <别名2> on <别名1>.<字段1>=<别名2>.<字段1>
    where <别名2>.<字段2>=<值>;
    
  • 子查询

    • 标量子查询: 子查询只返回一个结果
    select * from <表的名字> where <字段1> <比较运算符> <(select avg(字段) from <表的名字>)>;
    
    • 列级子查询: 返回的结果是一列 (一列多行)
    select * from <表的名字> where <字段1> <范围查询> <(select 字段 from <表的名字>)>;
    
    • 行级子查询: 返回的结果是一行(一行多列)
    select * from <表的名字> where <(字段1,字段2)> = <(select max(字段1),max(字段2) from <表的名字>)>;
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值