被人打掉奶瓶都要写的MySQL表查询(聚合查询、联合查询、子查询、合并查询)

查询

聚合查询

聚合函数

null空值不会被计数
搭配MySQL中的一些内置“函数”
count ()计算结果的行数,count和()之间不能有空格
在这里插入图片描述
在这里插入图片描述
count是不计算null值
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
求所有分数小于90的同学的平均分
在这里插入图片描述

GROUP BY子句

把得到的查询结果按照一定的规则分组(可能分成多个组)
在这里插入图片描述

HAVING关键字

group by 也可以结合条件进行进一步筛洗,使用having+(表达式)
having是针对group by 之后的结果进行筛选,where是针对原始表中的的每条记录进行筛选

在这里插入图片描述
查找所有平均工资高于250的岗位和平均薪资
在这里插入图片描述

联合查询

MySQL中的各种连接
基本机制:笛卡尔积,两张表进行排列组合的结果

多表查询:
1、先计算多个表的笛卡尔积
2、基于条件针对笛卡尔积中的记录进行筛选
3、多表拆线呢要写表名.列名

内连接

select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;
select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

a)查找名字为许仙的同学的所有成绩
姓名包含在student表中、分数包含在score表中,针对这两张表进行联合查询
1、先查看两个表笛卡尔积的结果
2、按照student id 对笛卡尔积进行筛选,保留有意义的数据
3、再针对名字进行筛选

在这里插入图片描述
最后一步的第二种写法
在这里插入图片描述
b)查找所有同学的总成绩,以及同学的基本信息
1、先得到联合表的笛卡尔积
2、按照学生id来进行筛选,删除笛卡尔积中的不必要数据
3、对学生成绩进行求和然后group by

在这里插入图片描述
c)查找所有同学每一科的成绩和同学的成绩
最终显示 姓名、科目、成绩
在这里插入图片描述
学生表中有8个
在这里插入图片描述
id为8号的学生在成绩表中不存在
在这里插入图片描述
进行笛卡尔积之后再按照id筛选,这样的筛选结果一定是同时再两个表中都出现过的记录(内连接)

有的数据在student中存在,在score中不存在,或者二者有其一中存在,这样的记录可以查出来(外连接)

有的数据在student中存在,在score中不存在可查到,student中不存在,score中存在查不到(左连接)

有的数据在student中存在,在score中不存在可查不到,student中不存在,score中存在可查到(右连接)

外连接

自连接

自连接本质上相当于把同一列中的两行记录转换成不同列的同一行记录

所有计算机原理成绩高于java成绩的同学id
1、先找到java和计算机原理的课程id
2、按照课程id在分数表中筛选数据

在这里插入图片描述
在这里插入图片描述

a)针对score表自身进行笛卡尔积
在这里插入图片描述
b)加上学生id的限制
在这里插入图片描述
c)加上课程id限制
在这里插入图片描述
d)按照分数大小进行比较
在这里插入图片描述
e)查询学生id
在这里插入图片描述

子查询

在其他sql中嵌入查询语句

1、单行子查询(子查询结果只有一行)

查询和“不想毕业”同班的同学
在这里插入图片描述
在这里插入图片描述
2、多行查询
查询语文或者英文对应的成绩

借助in的方式进行子查询==(先执行子查询,把子查询的结果保存到内存中,再进行主查询,再结合刚刚子查询的结果筛选最终结果)==
在这里插入图片描述
在这里插入图片描述
使用exists先执行主查询再触发子查询
在这里插入图片描述
如果子表查询结果集合比较小,就用in
如果子表查询的结果集合比较大,而主表的集合小,用exists

合并查询

相当于把多个查询的结果集合合并成一个集合==(需要保证多个结果集之间的字段类型和数目都一致)==
union关键字

查询id<3或者名字为英文的课程
在这里插入图片描述
如果不去重使用union all

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值