-- 外连接
/*
应用场景: 用于查询一个表中有,另一个表中没有的记录
特点:
1、外连接的查询结果为主表中的所有记录
如果从表中有和主表匹配的,则显示匹配的值
如果从表中没有和主表匹配的,则显示null
外连接查询的结果=内链接结果+主表中有而从表中没有的记录
2、左外连接:left join 左边的是主表
右外连接:right join 右边的是主表
3、左外和右外交换两表的顺序可以实现同样的效果
4、全外连接:内链接结果+表1中有但表2中没有+表1中没有但表2中有
*/
-- ;案例:查询男朋友不在男神表中的女神名
-- 左外连接实现 (outer 可省略)
SELECT be.name,bo.*
FROM beauty be
LEFT outer JOIN boys bo
ON be.boyfriend_id=bo.id
WHERE bo.id is null;
-- 右外连接实现
SELECT be.name,bo.*
FROM boys bo
RIGHT OUTER JOIN beauty be
ON be.boyfriend_id=bo.id
WHERE bo.id is null;
-- 案例: 查询哪个部门没有员工
-- 左外
SELECT d.*,employee_id
FROM departments d
LEFT OUTER JOIN employees e
ON d.department_id=e.department_id
WHERE employee_id is null;
-- 左外
SELECT d.*,employee_id
FROM employees e
RIGHT JOIN departments d
ON d.department_id=e.department_id
WHERE employee_id is null;
/*全外连接(MySQL中不支持)
语法:
USE girls
SELECT be.*,bo.*
FROM beauty be
FULL OUTER JOIN boys bo
ON be.boyfriend_id=bo.id;
*/
08.1连接查询-外连接——MySQL
最新推荐文章于 2024-07-22 22:50:39 发布