MySQL连接查询(内连接,外连接,全连接)

对比分析MySQL连接查询(内连接,外连接,全连接)

首先建三个数据表

sql文件下载
https://wwr.lanzous.com/i16UCob7sbg
密码:f2z5
(蓝奏云不能上传sql文件,下载后先改成sql后缀)
employees
在这里插入图片描述
jobs
在这里插入图片描述

levels

在这里插入图片描述

内连接

关键字 inner join…on…

inner 可以省略

等值连接

查询员工工资信息

 SELECT * 
 FROM employees 
 INNER JOIN jobs
 ON jobs.job_id=employees.job_id;

在这里插入图片描述
根据连接条件,将两表连接起来,
注意:

employees表中的 高九,以及
jobs表中的 老板,没有满足连接条件的信息,因此查询出的表中没有

注意:接下来会与外连接做对比

非等值连接

查询员工的工资及对应等级

 SELECT salary,level
 FROM jobs
 INNER JOIN levels
 ON jobs.salary >= levels.min_sal AND jobs.salary< levels.max_sal;

在这里插入图片描述
注意:

jobs表中的老板,levels表中的E5,都没有满足相应的连接条件,查询结果中也没有他们的信息。

自连接

查询各个员工的上级

 SELECT DISTINCT e.employee_name 员工名, m.employee_name 上级
 FROM employees e
 INNER JOIN employees m
 ON e.boss_id=m.employee_id;

在这里插入图片描述

自连接就是一个表和它自身进行连接,是多表连接的特殊情况。
在自连接查询中,要先在FROM字句中为表分别定义两个不同的别名
然后使用这两个别名写出一个连接条件

外连接

左外连接

主表在关键字左边

关键字:LEFT JOIN

与等值连接比对,

 select * 
 from employees 
 left JOIN jobs
 on jobs.job_id=employees.job_id;

在这里插入图片描述

这里出现了高九,因为左外连接查询,是以left左边的表为主表,右边的为从表,也就是会查询出这个表中所有的记录

如果某条记录没有满足连接条件,就让从表的字段补null填充。

与非等值连接的对比可以自己试一下

右外连接

主表在关键字右边

关键字:RIGHT JOIN

与非等值连接对比

SELECT salary,level
 FROM jobs 
 Right JOIN levels
 on jobs.salary >= levels.min_sal AND jobs.salary< levels.max_sal;

在这里插入图片描述

右外连接,不过是主表变为了 join 右边的表,
其他和左外连接一样

可以自行对比一下等值连接,以及左外连接

全外连接

MySQL不支持全外连接的语法,但可以使用**关键字UNION**得到相同的结果
即求左外连接和右外连接的并集

SELECT salary,level
 FROM jobs 
 LEFT JOIN levels
 on jobs.salary >= levels.min_sal AND jobs.salary< levels.max_sal
 UNION 
 SELECT salary,level
 FROM jobs 
 RIGHT JOIN levels
 on jobs.salary >= levels.min_sal AND jobs.salary< levels.max_sal;

在这里插入图片描述

交叉连接

关键字:CROSS JOIN
就是做笛卡尔积,第一个表的每一行分别对应另一个表的每一行

 select * 
 FROM levels
 CROSS JOIN jobs;

在这里插入图片描述
一共48条记录(两表记录相乘6*8)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

RwTo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值