第六节---高级查询

高级查询

1.聚合函数

分组之后的一个阶段存在多个不同的值,那么你就需要使用聚合函数将这些列段的多个值整成一个值,所以就称为聚合函数---(聚合函数就是将一个阶段的不同值合为一个值)

  • count();

    • 计算符合条件的行数

  • sum();

    • 求和

  • avg();

    • 平均值

  • max();

    • 最大值

  • min();

    • 最小值

  • select count(*) from 表名;

    • 聚合函数一般处于select 后面,并且可以用于子查询

  • 当把所有值合在一起,给出一个语句的时候,只能使用聚合函数,不能使用其他正常字段

2.联表查询(将两个表之间的数据同时连接在一个表里面)

联表查询时一定指明来自哪个表,联表不用*

  • select * from 表名1 别名1 inner join 表名2 别名2 on 别名1.列段 = 别名2.列段;

    • on后面表示联表条件(两个表之间有哪个列段是可以将两个表联接起来的)

    • select a.no,b.name from room a inner join type b on a.type_id = b.id;

  • 内联接

    • inner join

    • 只有两个表所对应的都有数据时才显示

    • 先把表与表之间有联系的列段将表关联起来,再取出所需数据列段

  • 左联接

    • left join

    • select a.no,b.name from room a left join type b on a.type_id = b.id;

      • 不管两个表所对应的有没有数据左边的a表的代码全部显示

  • 右联接

    • right join

    • select a.no,b.name from room a right join type b on a.type_id = b.id;

      • 不管两个表所对应的有没有数据右边的b表的代码全部显示

3.分组及筛选

  • 分组:group by 列段

    • 分组必须写在where 后面

    • select sex,count(*) from user group by sex;

      • 分组时查询处只能出现聚合函数和分组字段

      • 先分组再计数

      • count(*)中的星号在有要求的时候可以换成具体字段

        • 比如考试分数为score 考生写写没去考试,score为null值,统计的时候可以换为count(指定表名.score)

  • 筛选:having

    • 分组之后的数据只能使用having筛选,不能使用where条件,两者本质差不多

  • 先联表---再分组---再筛选---再排序表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值