【Mysql】Mysql的多表查询---多表联合查询(中)

1、外连接查询

外连接 查询分为左外连接(left outer join), 右外连接查询(right outer join) ,满外连接查询(full outer join).

注意:oracle 里面有full join ,但是在mysql中对full join 支持的不好。我们可以使用union来达到目的。

格式:

(1)左外连接:(关键字: left outer join)

select * from A left outer join B on 条件;

注意:当有多个表时,可以这样写:

select * from A left outer join B on 条件1

left outer join C on 条件2 ;

(2)右外连接(关键字:right outer join)

select * from A right outer join B on 条件;

注意:当有多个表时,可以这样写:

select * from A right outer join B on 条件1

right outer join C on 条件2;

操作:

------查询哪些部门有员工,哪些部门没有员工

------------查询员工有对应的部门,哪些没有

(3)实现满外连接(即将左外连接与右外连接的结果并起来)

注意:Mysql中不能使用full join

使用union

使用union all

union 与union的区别:

union是将两个查询结果上下拼接并去重,而union all是将两个查询结果上下拼接不去重。

2、子查询

(1)介绍

子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,通俗一点就是包含select嵌套的查询。

(2)特点

子查询可以返回的数据类型一共有4种:

1))单行单列:返回的是一个具体列的内容,可以理解为一个单值数据。

2))单行多列:返回一行数据多个列的内容。

3))多行单列:返回多行记录之中同一列的内容。

4))多行多列:查询返回的结果是一张临时表。

操作:

emp3表;

dept3表:

------查询年龄最大的员工信息,显示信息包含员工号、员工名字,员工年龄。

--------查询研发部和销售部的员工信息,包含员工号、员工名字、

方法一:联合查询

方法二:子查询

相关推荐
渣波17 小时前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
Jim6001 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
GreatSQL2 天前
gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
mysql
倔强的石头_2 天前
KingbaseES 新版MySQL 兼容版体验:旧版迁移 + 功能实测
数据库
倔强的石头_5 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
云技纵横5 天前
唯一索引 INSERT 死锁实战:5 秒复现交叉插入的 S 锁循环等待
sql·mysql
沉默王二5 天前
面试官:RAG 不用向量数据库,用 MySQL 硬扛?我:100 万向量不是很轻松?
mysql·面试·ai编程
冬奇Lab5 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
小猿姐5 天前
MySQL Top 10 热点问题 AI 运维实战:从内核诊断到云原生运维
mysql·云原生·aiops