SQL重学-Join连接总结(jion连接看这篇就够了)

SQL重学-Join连接总结(jion连接看这篇就够了)

一、Join关键字

  1. INNER JOIN 关键字在表中存在至少一个匹配时返回行。
    file

  2. LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
    file

  3. RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
    file

  4. FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
    FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
    file

    二、Join语法([]中内容为可选)

    SELECT column_name(s)
    FROM table1
    [inner] [left] [right] [full] JOIN table2
    ON table1.column_name=table2.column_name;

    三、举例

    举例一:隐式连接、内连接、左连接、右连接

    有一个全部员工的薪水表salaries简况如下:
    file
    有一个各个部门的领导表dept_manager简况如下:
    file
    查找各个部门领导薪水详情以及其对应部门编号dept_no,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列

分析:隐式连接、内连接、左连接、右连接都可以得到结果,sql如下:

  1. 隐式连接

    select
        s.*,d.dept_no
    
    from salaries s,dept_manager d
    
    where 
        s.emp_no = d.emp_no;
  2. 内连接(inner join)inner关键字可省略

    select 
        s.*,d.dept_no
    
    from salaries s
    join dept_manager d
    
    on s.emp_no = d.emp_no;
  3. 左连接(left join)(注意哪个表在做)

    select 
        s.*,d.dept_no
    
    from dept_manager d
    left join salaries s
    
    on s.emp_no = d.emp_no;
  4. 右连接(right join)(注意哪个表在右)

    select 
        s.*,d.dept_no
    
    from salaries s
    right join dept_manager d
    
    on s.emp_no = d.emp_no;

    输出如下:
    file

举例二:全连接

  1. 全连接(left join)

    select 
        s.*,d.dept_no
    
    from salaries s
    full join dept_manager d
    
    on s.emp_no = d.emp_no;

版权声明:
作者:十下
链接:http://blog.edkso.cn/?p=718
来源:十下博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>