MySQL 多表查询,联合查询,子查询 ,内、外、自连接介绍,看这一篇就够啦(还含练习题哦)

本文详细介绍了SQL中的连接查询,包括内连接、外连接(左外连接、右外连接)和自连接的语法及示例。此外,还讲解了联合查询的`union`和`union all`用法,以及子查询的分类和应用场景。最后通过多表关系示例和练习题巩固了所学知识。
摘要由CSDN通过智能技术生成

连接查询 - 内连接 作用: 查询两张表的交集数据

内连接查询语法:

-- 隐式内连接
select 字段列表 from 表1, 表2 where 条件 ....;
-- 显式内连接
select 字段列表 from 表1 [inner] join 表2 on 连接条件 ...;

内连接查询的是两张表交集的部分

内连接演示:

创建emp表和dept表在上一篇博客有写到,这里就不再提供了

-- 1.查询每一个员工的姓名以及关联的部门的名称(隐式内连接)
-- 表结构: emp ,dept
-- 连接条件: emp.dept_id = dept.id

-- 写法1
select emp.name,dept.name from emp,dept where emp.dept_id = dept.id;

-- 写法2
select e.name,d.name from emp e,dept d where e.dept_id = d.id;

-- 2.查询每一个员工的姓名以及关联的部门的名称(显式内连接)
-- 表结构: emp ,dept
-- 连接条件: emp.dept_id = dept.id

select e.name,d.name from emp e inner join dept d on e.dept_id = d.id;

-- inner 可以省略
select e.name,d.name from emp e join dept d on e.dept_id = d.id;

连接查询 - 外连接 

外连接查询语法:

左外连接

select 字段列表 from 表1 left [outer] join 表2 on 条件 ...;
-- 相当于查询表1(左表)的所有数据包含表1和表2交集部分的数据

右外连接

select 字段列表 from 表1 right [outer] join 表2 on 条件 ...;
-- 相当于查询表1(右表)的所有数据包含表1和表2交集部分的数据

外连接演示

-- 1.查询emp表所有的数据,和对应的部门信息(左外连接)
-- 表结构: emp,dept
-- 连接条件: emp.dept_id = dept.id
select e.*,d.name from emp e left join outer dept d on emp.dept_id = dept.id;

-- outer 可以省略
select e.*,d.name from emp e left join dept d on emp.dept_id = dept.id;

-- 2.查询dept表所有数据,和对应的员工信息(右外连接)
select d.*,e.* from emp e right join dpet d on emp.dept_id = dept.id;

连接查询 — 自连接

自连接查询语法:

select 字段列表 表A 别名A join 表A 别名B on 条件...;

自连接查询,可以是内连接查询,也可以是外连接查询

自连接代码演示

-- 1. 查询员工及其所属领导的名字
-- 表结构: emp
select a.name,b.name from emp a,emp b where a.managerid = b.id;

-- 2.查询所有员工及其领导的名字,如果员工没有领导,也需要查询出来
select a.name '员工',b.name '领导' from emp a left join emp b on a.mangerid = b.id;

联合查询 - union  union all

对于 union  查询,就是把多次查询结果合并起来,形成一个新的查询结果集

语法:

select 字段列表 from 表A ...

union [all]

select 字段列表 from 表B ...;

注意&

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易点点心动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值