[MySQL笔记]08.多表查询
2021/7/17 19:08:54
本文主要是介绍[MySQL笔记]08.多表查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 多表查询
- 1表连接查询
- 1.1笛卡尔积
- 1.2内连接
- 1.2.1隐式内连接
- 1.2.2显示内连接
- 1.3外连接
- 1.3.1左外连接
- 1.3.2右外连接
- 子查询
- 1.子查询的结果是单行单列的结果,值可以直接比较
- 2.子查询结果是单列多行的,集合 in\not in\>any\
多表查询
1表连接查询
1.1笛卡尔积
笛卡尔积, 两表数据相乘
直接查看可以发现许多错误拼接的数据(脏数据)
select * from emp, dept;
– 乘积筛选后的结果, 两边能匹配上的数据
select * from emp, dept where emp.deptno = dept.deptno; select * from emp e, dept d where e.deptno = d.deptno;
1.2内连接
1.2.1隐式内连接
隐式内连接:看不到 JOIN 关键字,条件使⽤ WHERE 指定
SELECT 字段名 FROM 左表, 右表 WHERE 条件;
1.2.2显示内连接
显示内连接:使⽤ INNER JOIN … ON 语句,可以省略 INNER
SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件;
1.3外连接
1.3.1左外连接
左外连接:使⽤ LEFT OUTER JOIN … ON, OUTER 可以省略
SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件
在内连接的基础上,保证左边的表的数据全部展示
1.3.2右外连接
右外连接:使⽤ RIGHT OUTER JOIN … ON, OUTER 可以省略
SELECT 字段名 FROM 左表 RIGHT [OUTER] JOIN 右表 ON 条件
在内连接的基础上,保证右边的表的数据全部展示
子查询
子查询,查询中嵌套查询,使用另一个查询的结果
1.子查询的结果是单行单列的结果,值可以直接比较
-- 查询公司中最高薪资的员工姓名和所在的部门编号、 select max(sal) from emp; select ename,deptno from emp where sal =5000; -- 组合 select ename,deptno from emp where sal=(select max(sal) from emp);
2.子查询结果是单列多行的,集合 in\not in>any<all
-- 查询部门 平均薪资高于1800的部门 中所有员工的信息 select deptno from emp group by deptno having avg(sal)>1800; select * from emp where deptno in (select deptno from emp group by deptno having avg(sal)>1800);
3.子查询是多行多列的,作为一张临时表来使用
-- 查询薪资大于所在部门平均薪资的所有员工信息 select * from emp; -- 子查询作为临时表使用 select avg(sal) s_avg,deptno from emp group by deptno; -- 组合 select * from emp e join (select avg(sal) s_avg,deptno from emp group by deptno) d on e.deptno=d.deptno where e.sal>d.s_avg;
4.子查询用于的语句
⼦查询结果只要是单列,则在 WHERE 后⾯作为条件 ⼦查询结果只要是多列,则在 FROM 后⾯作为表进⾏⼆次查询
这篇关于[MySQL笔记]08.多表查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南
- 2024-12-07MySQL慢查询入门:快速掌握性能优化技巧
- 2024-12-07MySQL入门:新手必读的简单教程
- 2024-12-07MySQL入门:从零开始学习MySQL数据库
- 2024-12-07MySQL索引入门:新手快速掌握MySQL索引技巧
- 2024-12-06BinLog学习:MySQL数据库BinLog入门教程
- 2024-12-06Binlog学习:MySQL数据库的日志管理入门教程