MySQL - 多表查询


文章目录

    • 1.聚合查询
    • 2.分组查找
    • 3.联合查询
      • 内连接
      • 外连接
      • 自连接
      • 子查询
      • 合并查询
    • SQL查询各关键字的执行先后顺序
  • 总结


本文开始

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


总结

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

你可能感兴趣的:(MySQL,mysql,数据库,多表查询,sql,软件工程)