zoukankan      html  css  js  c++  java
  • (十一)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;

  • 相关阅读:
    Jenkins 基础篇
    Jenkins 基础篇
    Windows配置Nodejs环境
    Windows配置安装JDK
    Windows安装MySQL
    Ubuntu安装MySQL
    利用中国移动合彩云实现360云盘迁移到百度云
    Linux Shell下的后台运行及其前台的转换
    nova image-list 和 glance image-list 有什么区别
    启动虚拟机时提示我已移动或我已复制选项的详解
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/12327979.html
Copyright © 2011-2022 走看看