10、连接查询(外连接)----学习笔记

本文介绍了SQL中的外连接查询,包括左外连接、右外连接和全外连接的使用,通过实例展示了如何查询一个表中存在而另一表中不存在的记录,如查询没有男朋友的女神、没有员工的部门等。同时,提到了全外连接在MySQL中的不支持以及交叉连接的概念。此外,还提供了练习题目帮助读者巩固所学。
摘要由CSDN通过智能技术生成

10、连接查询(外连接)

  • 应用场景:用于查询一个表中有,另一个表没有的记录

  • 特点:

1、外连接的查询结果为主表中的所有记录
	如果从表中有和它匹配的,则显示匹配的值
	如果从表中没有和它匹配的,则显示 null
	外连接查询结果=内连接结果 + 主表中有而从表没有的记录

2、左外连接,left join左边的是主表
   右外连接,right join右边的是主表
 
3、左外和右外交换两个表的顺序,可以实现同样的效果
4、全外连接 = 内连接的结果 +1中有但表2没有的+2有但表1没有的

10.1、引入:查询男朋友不在男神表的的女神名

SELECT * FROM beauty;
SELECT * FROM boys;

SELECT b.name 
FROM beauty b
LEFT OUTER JOIN boys bo
ON b.`boyfriend_id` = bo.`id`
WHERE bo.`id` IS NULL;

10.2、案例1:查询哪个部门没有员工

#左外
SELECT d.* , e.`employee_id`
FROM departments d
LEFT OUTER JOIN employees e
ON d.`department_id` = e.`department_id`
WHERE e.`employee_id` IS NULL;


#右外
SELECT d.*,e.`employee_id`
FROM employees e
RIGHT OUTER JOIN departments d
ON d.`department_id` = e.`department_id`
WHERE e.`employee_id` IS NULL;

10.3、全外(Mysql 不支持这个,但别的数据库语言支持)

USER girls;
SELECT b.* ,bo.*
FROM beauty b
FULL OUTER JOIN boys bo
ON b.boyfriend_id = bo.id

10.4、交叉连接

SELECT b.* , bo.*
FROM beauty b
CROSS JOIN boys bo;

  • 总结

功能:sql99支持的较多
可读性:sql99实现连接条件和筛选条件的分享,可读性较高

10.5、练习题目

#1、查询编号 > 3的女神的男朋友信息,如果有则列出详细,如果没有,用NULl填充
SELECT b.id , b.name ,bo.*
FROM beauty b
LEFT OUTER JOIN boys bo
ON b.`boyfriend_id` = bo.id
WHERE b.id > 3;

#2、查询哪个城市没有部门(部门为主)
SELECT d.department_name ,l.city
FROM locations l 
LEFT OUTER JOIN departments d
ON d.`location_id` = l.`location_id`
WHERE d.`department_name` IS NULL

#3、查询部门名为SAL或IT的员工信息
#下面是以  departments 为主表
SELECT d.department_name , e.*
FROM departments d 
LEFT OUTER JOIN employees e
ON d.`department_id` = e.`department_id`
WHERE d.`department_name` IN ('SAL','IT')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值