SQL连接查询
精华
小牛编辑
138浏览
2023-03-14
顾名思义,连接(JOIN)表示要结合一些东西。 在SQL的情况下,连接(JOIN)表示“组合两个或更多表”。
在SQL中,JOIN
子句用于组合数据库中两个或多个表的记录。
SQL JOIN的类型
- 内连接 - INNER JOIN
- 左连接 - LEFT JOIN
- 右连接 - RIGHT JOIN
- 全连接 - FULL JOIN
假设有以下几张表,EMPLOYEE 表的结构和数据如下所示 -
EMP_ID | EMP_NAME | CITY | SALARY | AGE |
---|---|---|---|---|
1 | Angelina | Chicago | 200000 | 30 |
2 | Robert | Austin | 300000 | 26 |
3 | Christian | Denver | 100000 | 42 |
4 | Kristen | Washington | 500000 | 29 |
5 | Russell | Los angels | 200000 | 36 |
6 | Marry | Canada | 600000 | 48 |
PROJECT 表的结构和数据如下所示 -
PROJECT_NO | EMP_ID | DEPARTMENT |
---|---|---|
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 | DEPARTMENT |
---|---|
Angelina | Testing |
Robert | Development |
Christian | Designing |
Kristen | Development |
2. 左连接 - LEFT JOIN
SQL left join
返回左表中的所有值和右表中的匹配值。如果没有匹配的连接值,则返回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 | DEPARTMENT |
---|---|
Angelina | Testing |
Robert | Development |
Christian | Designing |
Kristen | Development |
Russell | NULL |
Marry | NULL |
3. 右连接 - RIGHT JOIN
在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 | DEPARTMENT |
---|---|
Angelina | Testing |
Robert | Development |
Christian | Designing |
Kristen | Development |
4. 全连接 - FULL JOIN
在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 | DEPARTMENT |
---|---|
Angelina | Testing |
Robert | Development |
Christian | Designing |
Kristen | Development |
Russell | NULL |
Marry | NULL |