顧名思義,連接(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 |
