MySQL笔记 sql99外连接和交叉连接
外连接
应用场景:
用于查询一个表中有,另一个表没有的记录
特点:
1.外连接的查询结果为主表中的所有记录
如果从表中有和它匹配的,则显示匹配的值
如果从表中没有和它匹配的,则显示null
往外链接查询结果=内连接结果+主表中有而从表没有的记录
2.左外连接,left join左边的是主表
右外连接,right join右边的是主表
3.左外和右外交换两个表的顺序,可以实现同样的效果
4.全外连接=内连接的结果+表1中有但表2没有的+表2中有但表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;
二.查询哪个城市没有部门
SELECT city,department_id FROM locations l LEFT OUTER JOIN departments d ON d.`location_id`=l.`location_id` WHERE department_id IS NULL; #或 SELECT city, department_id FROM departments d RIGHT OUTER JOIN locations l ON d.`location_id`=l.`location_id` WHERE department_id IS NULL;
#三.查询部门名为SAL或IT的员工信息
SELECT e.*,department_name FROM departments d LEFT OUTER JOIN employees e ON e.`department_id`=d.department_id WHERE department_name='SAL' OR department_name='IT';
交叉连接
语法:
select 查询列表
from 表1 别名
cross join 表2 别名
特点:
类似于笛卡尔乘积
总结