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