DBMS SQL联接查询

顾名思义, JOIN意味着结合一些东西。对于SQL, JOIN的意思是“合并两个或多个表”。
在SQL中, JOIN子句用于合并数据库中两个或多个表中的记录。
SQL JOIN的类型

  1. 内部联接
  2. 左联接
  3. 右联接
  4. 全联接
样品表
雇员
EMP_ID EMP_NAME 薪水 年龄
1 Angelina Chicago 200000 30
2 Robert Austin 300000 26
3 Christian Denver 100000 42
4 Kristen Washington 500000 29
5 Russell 洛杉矶天使 200000 36
6 Marry Canada 600000 48
项目
PROJECT_NO EMP_ID 部门
101 1 Testing
102 2 Development
103 3 Designing
104 4 Development
1.内联
在SQL中, 只要满足条件, INNER JOIN就会选择两个表中具有匹配值的记录。它从条件满足的两个表中返回所有行的组合。
句法
SELECT table1.column1, table1.column2, table2.column1, .... FROM table1 INNER JOIN table2 ON table1.matching_column = table2.matching_column;

询问
SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT FROM EMPLOYEE INNER JOIN PROJECT ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;

输出量
EMP_NAME 部门
Angelina Testing
Robert Development
Christian Designing
Kristen Development
2.左加入
SQL左联接返回左表中的所有值以及右表中的匹配值。如果没有匹配的联接值, 它将返回NULL。
句法
SELECT table1.column1, table1.column2, table2.column1, .... FROM table1 LEFT JOIN table2 ON table1.matching_column = table2.matching_column;

询问
SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT FROM EMPLOYEE LEFT JOIN PROJECT ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;

输出量
EMP_NAME 部门
Angelina Testing
Robert Development
Christian Designing
Kristen Development
Russell NULL
Marry NULL
3.右联接
在SQL中, RIGHT JOIN返回右表中行的值中的所有值以及左表中的匹配值。如果两个表都没有匹配项, 它将返回NULL。
句法
SELECT table1.column1, table1.column2, table2.column1, .... FROM table1 RIGHT JOIN table2 ON table1.matching_column = table2.matching_column;

询问
SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT FROM EMPLOYEE RIGHT JOIN PROJECT ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;

输出量
EMP_NAME 部门
Angelina Testing
Robert Development
Christian Designing
Kristen Development
4.全联接
在SQL中, FULL JOIN是左右外部联接的组合结果。连接表具有两个表中的所有记录。它将NULL放在未找到的匹配项上。
【DBMS SQL联接查询】句法
SELECT table1.column1, table1.column2, table2.column1, .... FROM table1 FULL JOIN table2 ON table1.matching_column = table2.matching_column;

询问
SELECT EMPLOYEE.EMP_NAME, PROJECT.DEPARTMENT FROM EMPLOYEE FULL JOIN PROJECT ON PROJECT.EMP_ID = EMPLOYEE.EMP_ID;

输出量
EMP_NAME 部门
Angelina Testing
Robert Development
Christian Designing
Kristen Development
Russell NULL
Marry NULL

    推荐阅读