SQL表的连接查询

基本语法结构:
SELECT column
FROM join_table
JOIN_TYPE join_table
ON (join_condition)
JOIN_TYPE 为连接类型,可分为:内连接(INNER JOIN)、外连接(OUTER JOIN)、自然连接(NATURAL JOIN)和交叉连接(CROSS JOIN)。

  1. 内连接:INNER JOIN也称为等同连接,返回的结果是两个表中所有相匹配的数据,舍弃不匹配的数据。在这种查询中,DBMS只返回来自源表中的相关的行,即查询的结果表中包含的两源表行必须满足ON子句中的搜索条件。如果在源表中的行在另一表中没有对应(相关)的行,则该行将被舍掉,不会包括在结果表中。
    内连接使用比较运算符来完成,可分为等值连接(=)和不等连接(">",">=","<","<=","!>","!<","<>") SQL表的连接查询_第1张图片
    外连接分为:左外连接(left join)、右外连接(right join)和全外连接(full join)

  2. 左外连接:LEFT [OUTER] JOIN,OUTER可省略,返回的结果表中除了包括匹配行外,还包括JOIN关键字左边表的所有不匹配行。缺少的右边表中的属性值用Null表示。
    即:左外连接=内连接+左边表中不匹配的行 SQL表的连接查询_第2张图片

  3. 右外连接:RIGHT [OUTER] JOIN,OUTER可省略,返回的结果表中除了包括匹配行外,还包括JOIN关键字右边表的所有不匹配行。缺少的左边表中的属性值用Null表示。
    即:右外连接=内连接+右边表中不匹配的行 SQL表的连接查询_第3张图片

  4. 全外连接:FULL [OUTER] JOIN,OUTER可省略,返回的结果表中除了包括匹配行外,还包括JOIN关键字左边表或者右边表的所有不匹配行。缺少的左边表或者右边表中的属性值用Null表示。
    即:全外连接=内连接+右边表中不匹配的行+左边表中不匹配的行 SQL表的连接查询_第4张图片

  5. 交叉连接:CROSS JOIN,返回被连接的两个表所有数据行的笛卡尔积,返回的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。在使用CROSS
    JOIN 关键字交叉连接表时,因为生成的是两个表的笛卡尔积,所以不能使用ON关键字,只能在WHERE子句中定义搜索条件。

  6. 自然连接:NATURAL JOIN,是一种特殊的等价连接,它将表中具有相同名称的列自动进行记录匹配。它的缺点是虽然可以指定查询结果包括哪些列,但不能人为地指定哪些列被匹配,另外它的一个特点是连接后的结果表中匹配的列只有一个,比如在上面的示意图中,若是自然连接,则表中只有一列C。SQL Sever不支持该连接。

  7. 补充说明:UNION运算符
    标准SQL中,可以使用UNION运算符实现集合并的运算。当UNION运算符执行集合并运算时,自动从结果表中消除重复的行。如果要保留重复元组的话,必须在UNION后加上ALL关键词指明。
    即:UNION ALL
    SQL表的连接查询_第5张图片
    声明:菜鸟学习路上的总结,若有误请您指正,若侵权请您联系我,若转载请您附上链接。

你可能感兴趣的:(SQL表的连接查询)