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集合操作

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程