MySQL - 多表查询

本文详细介绍了SQL中的聚合查询(count(),sum(),avg(),max(),min)、分组查找(groupby,having)、联合查询(内连接和外连接)以及子查询和合并查询。同时讨论了SQL关键字的执行顺序。
摘要由CSDN通过智能技术生成


本文开始

1.聚合查询

聚合查询,使用的是聚合函数:count(),sum(),avg(),max(),min

  • count() - 求查询到数据的数量
-- 统计班级总共有多少同学
select count(*) from student;
select count(0) from student; -- 会返回查询结果集中的总行数
-- 统计某列(qq列)有多少个
select count(qq) from student;
  • sum() - 求查询到数据的总和
select * sum(math) from score;
  • avg() - 求查询到数据的平均值
select avg() from score;
  • max() - 求查询到数据的最大值
select max(math) from score;
  • min() - 求查询到数据的最小值
select min(english) from score where english > 60;

2.分组查找

  • group by - 指定列进行分组查询
insert into emp(name, role, salary) values
('张三','服务员', 300),
('李四','服务员', 2000),
('王五','老板', 10000);

-- 查找emp表,按照角色分组,查询角色的最高工资
select role,max(salary) from emp group by role;
  • having - 对group by进行分组后,对分组后条件进行过滤
-- 平均工资低于1000的角色和它的平均工资
select role, avg(salary) from emp group by role having avg(salary) < 1000;

3.联合查询

内连接

  • 关键字:表1 join 表2 on
    直接使用: 表1,表2
-- 语法
select 字段 from1 别名1,2 别名2 where 连接条件 and 其他条件;
select 字段 from1 别名1 [inner] join2 别名2 on 连接条件 and 其他条件;


-- 例 查询张三的成绩
select 
	stu.name,sco.score 
from 
	student stu 
	join score sco on stu.id = sco.id and stu.name='张三';

外连接

  • 左外连接:
    左侧的表完全显示我们就说是左外连接,如果是遇到了,左侧表中存在,右侧表中不存在的数据,此时就会把对应的列填成空值
-- 左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;
-- 右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件;
  • 右外连接:右侧的表完全显示我们就说是右外连接 。如果遇到了右侧表中存在,左侧表中不存在的数据,也会把对应的列填成null.

– 了解不是重点掌握

自连接

  • 自连接: 自连接是指在同一张表连接自身进行查询,把行之间的关系转换成列之间的关系,方便条件编写
-- 自连接语法:
select ... from1,表1 where 条件
select ... from1 join1 on 条件

子查询

  • 子查询: 嵌套查询,是指嵌入在其他sql语句中的select语句;非常不建议使用,会把 简单的 sql 变的复杂
select ... from1 where 字段1 = (select ... from ...);

合并查询

  • 合并查询: union /union all 合并多个结果集
    union: 去除重复数据
    union all:不去除重复数据

SQL查询各关键字的执行先后顺序

SQL查询中各个关键字的执行先后顺序:
from > on> join > where > group by > with > having >
select > distinct > order by > limit


总结

✨✨✨各位读友,本篇分享到内容如果对你有帮助给个👍赞鼓励一下吧!!
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值