(十一)MySQL语法-外连接


#外连接
#外连接的查询结果为主表中的所有记录,如果从表中有匹配的,就显示匹配的值,如果从表中没有和他匹配的值,则显示为null
# 外连接的查询结果=内连接的结果+主表中有而从表中没有的记录
#左外连接:left join 左边的表是主表 右外连接:right join 右边的表是主表 左外连接和右外连接,交换两个表的顺序,能够实现相同的效果
#应用场景:用于查询一个表中有,一个表中没有的情况


#案例1:查询男朋友不在男神表的女神名 简而言之,就是查询没有男神的女神名
SELECT a.NAME, b.* FROM beauty a
LEFT OUTER JOIN boys b ON a.boyfriend_id = b.id
WHERE
b.id IS NULL;--注意:这里推荐使用主键
#使用右外连接实现这个需求
SELECT b.NAME, a.* FROM boys a
RIGHT OUTER JOIN beauty b ON b.boyfriend_id = a.id
WHERE
a.id IS NULL;--注意:这里推荐使用主键


#案例2;查询哪个部门没有员工
select d.department_name,e.* from departments d LEFT JOIN employees e on d.department_id=e.department_id where e.employee_id is null;

#全外连接 现在基本上不用
#全外连接=内连接的结果+表1中有但是表2中没有的+表2中有的但是表1中没有的
#下面的这条sql语句在mysql数据库中是不支持的,所以没有办法执行
select a.*,b.* from beauty a FULL OUTER JOIN boys a on a.boyfriend_id=b.id

 

 

#交叉连接
#交叉连接最终显示的结果=表中的记录数X表2中的记录数 典型的笛卡尔乘积
select count(1) from beauty;--12
select count(1) from boys;--4
select b.*,bo.* from beauty b cross join boys bo;

posted @ 2020-02-18 21:02  ~码铃薯~  阅读(530)  评论(0编辑  收藏  举报