顾名思义, JOIN意味着结合一些东西。对于SQL, JOIN的意思是“合并两个或多个表”。
在SQL中, JOIN子句用于合并数据库中两个或多个表中的记录。
SQL JOIN的类型
- 内部联接
- 左联接
- 右联接
- 全联接
样品表
雇员
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放在未找到的匹配项上。
句法
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 |
评论前必须登录!
注册