mysql同步三张表如何用事务_MySQL 多表查询与事务的操作

表连接查询

什么是多表查询

# 数据准备

6d2077c234f3118094fbf746d27fd555.png

1c5312925b96ed436ce1cb22c86e69ae.png

# 多表查询的作用

* 比如:我们想查询孙悟空的名字和他所在的部门的名字,则需要使用多表查询

# 如果一条 SQL 语句查询多张表,因为查询结果在多张不同的表中,每张表取 1 列或多列

# 多表查询的分类

754f630ba2fb9d8f75ed1ba9ef28ed3e.png

笛卡尔积现象

# 什么是笛卡尔积现象?

389e9b30ecc643ecf7749177e18464ee.png

14cb46c8f1feacec254b2e444d27a4bd.png

# 如何消除笛卡尔积现象的影响

* 我们发现不是所有的数据组合都是有用的,只有员工表.dept_id = 部门表.id 的数据才是有用的。所以需要通过条件过滤掉没用的数据

30dd2272c1c9ee759a1a998205c40801.png

内连接

用左边表的记录去匹配右边表的记录,如果符合条件的则显示。如:从表.外键 = 主表.主键

# 隐式内连接

* 看不到 JOIN 关键字,条件使用 WHERE 指定

9d11a0dadd5aee761c1bcdff2023d67c.png

f62609c63ce25d2dd409a94cb983fd7d.png

# 显示内连接

* 使用 INNER JOIN ... ON 语句,可以省略 INNER

c3e8f92fa5b2175a2f75e6f84eb767ab.png

# 内连接查询的步骤:

* 确定查询哪些表

* 确定表连接的条件

* 确定查询的条件

* 确定查询的字段

左外连接

# 使用 LEFT OUTER JOIN ... ON 语句,OUTER 可以省略

2a609d1d7fae76c321e5ec6b6e7ac49b.png

* 用左表的记录去匹配右边表的记录,如果符合条件的则显示,否则,显示 NULL

* 可以理解为:在内连接的基础上保证坐标的数据全部显示

963eb959becf3f6070be13317cf544f4.png

fa09fcdeb7826c660c7fbeff8bc81c8b.png

右外连接

# 使用 RIGHT OUTER JOIN ... ON 语句,OUTER 可以省略

ea7e49ce4a97319bc3847bc104fcd8a1.png

* 用右边表的记录去匹配左边表的记录,如果符合条件的则显示

* 可以理解为:在内连接的基础上保证右表的数据全部显示

d476920055a5a21256c96b8f23d9ef18.png

子查询

什么是子查询

c92da97fdaa7715a6dff56b73d9dbf7a.png

2854b0cd31387c759b284b2730b512ac.png

# 子查询的概念:

* 一个查询的结果作为另一个查询的条件

* 有查询的嵌套,内部的查询称为子查询

* 子查询要用括号

子查询结果的三种情况

# 子查询的结果是单行单列的

3e95b0e10377bbff608c110399017dc7.png

# 子查询的结果是多行单列的

6e67e1f262531466166cddececdc0681.png

# 子查询的结果是多行多列的

6d6c5dc73dd2a869eb8cf11c521afbdc.png

子查询的结果是一个值的时候

# 子查询的结果只要是单行单列,肯定在 WHERE 后面作为条件,父查询一般使用比较运算符

6f2c91fa4f79d5303edf7b0fe6723e2a.png

# 案例:查询工资最高的员工是谁

96c4ce91ef563c0c43d5c25ca6a3121a.png

# 案例:查询工资低于平均工资的员工有哪些

07af8bebaf0f96c716540cc9c3d30d11.png

子查询的结果是多行单列的时候

# 子查询的结果是单列多行,结果集类似于一个数组,父查询使用 IN 运算符。

a8f55b0478f538830f2c100763f01f88.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值