MySQL多表查询及原理分析

多表查询

what是多表查询

先建好两张表供等下学习使用:
img
img
  多表查询的作用:查询多个表的不同列,组成我们想要的数据。

多表查询的分类:

img

笛卡尔积现象

img

  如图,如果不设置条件的话,dept的每条数据和emp的每条数据组合,这样就形成了笛卡尔积现象,这样的查询结果不是我们想要的。

  如何清除笛卡尔积现象的影响 我们发现不是所有的数据组合都是有用的,只有员工表.dept_id = 部门表.id 的数据才是有用的。所以需要 通过条件过滤掉没用的数据。
img

内连接

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

  隐式内连接:看不到 JOIN 关键字,条件使用 WHERE 指定 SELECT 字段名 FROM 左表, 右表 WHERE 条件

img

显式内连接

显示内连接:使用 INNER JOIN … ON 语句, 可以省略 INNER。SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件。
img
img

从这里我们发现取别名用的as是可以省略的,并且表名可以写首字母即可。

内连接查询步骤

  1. 确定查询哪些表
  2. 确定表连接的条件
  3. 确定查询的条件
  4. 确定查询的字段

左外连接

左外连接:使用 LEFT OUTER JOIN … ON,OUTER 可以省略:SELECT 字段名 FROM 左表 LEFT JOIN 右表 ON 条件 。

  用左边表的记录去匹配右边表的记录,如果符合条件的则显示;否则,显示 NULL 可以理解为:在内连接的基础上保证左表的数据全部显示(左表是部门,右表员工)

img

右外连接

右外连接:使用 RIGHT OUTER JOIN … ON,OUTER 可以省略:SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 条件

  用右边表的记录去匹配左边表的记录,如果符合条件的则显示;否则,显示 NULL 可以理解为:在内连接的基础上保证右表的数据全部显示
img

一定注意:这里的左连接右连接,并不是代表表出现在左或者右的位置,表左右的位置在于join,在jion前面写的表,它的字段就会在前面,而join后面的表它的字段就是在后边。看上面两张图,都是dept在前。所谓左连接,右连接里的左右两个字,这是用来决定那边是重要的表,左连接保证的是左表,右连接偏向右表。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jayden 

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

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

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

打赏作者

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

抵扣说明:

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

余额充值