SQL連接查詢

顧名思義,連接(JOIN)表示要結合一些東西。 在SQL的情況下,連接(JOIN)表示“組合兩個或更多表”。

在SQL中,JOIN子句用於組合資料庫中兩個或多個表的記錄。

SQL JOIN的類型

  1. 內連接 - INNER JOIN
  2. 左連接 - LEFT JOIN
  3. 右連接 - RIGHT JOIN
  4. 全連接 - 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

上一篇: SQL聚合函數 下一篇: SQL集合操作