inner join,left join和 right join

SQL join 用于把来自两个或多个表的行结合起来(多表查询)。

两张表数据如下

  • tableA
id name
1 a
2 b
3 c
4 d
  • tableB
id name
1 m
2 n
3 a
4 h
5 k
  1. inner join

    INNER JOIN 关键字在表中存在至少一个匹配时返回行。INNER JOIN 与 JOIN 是相同的。

    SELECT
        *
    FROM
        TableA
    INNER JOIN TableB ON TableA. NAME = TableB. NAME
    

    查询结果为:

    id name id1 name1
    1 a 3 a

    inner join 的查询结果表示的是符合查询条件的两表的交集

  2. left outer join

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

    SELECT
        *
    FROM
        TableA
    LEFT OUTER JOIN TableB ON TableA. NAME = TableB. NAME
    

    查询结果

    id name id1 name1
    1 a 3 a
    2 b null null
    3 c null null
    4 d null null

    left outer join 的查询结果表示的是a表的全集和b中符合条件的值,没有匹配到的内容用null填充

  3. right outer join

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

    SELECT
        *
    FROM
        TableA
    RIGHT OUTER JOIN TableB ON TableA. NAME = TableB. NAME
    

    查询结果:

    id name id1 name1
    1 a 3 a
    null null 1 m
    null null 2 n
    null null 4 h
    null null 5 k

    right outer join 的查询结果表示的是b表的全集和a中符合条件的值,没有匹配到的内容用null填充

你可能感兴趣的:(面试,数据库,sql)