SQL的各种连接(附带案例)

介绍

1.INNER JOIN(内连接)

返回两个表中满足连接条件的交集,即只返回匹配的行。

语法:

SELECT columns
FROM table1
INNER JOIN table2
ON table1.column = table2.column;

2.LEFT JOIN(左连接)

返回左表中的所有行,以及右表中满足连接条件的行。如果右表中没有匹配的行,则结果中包含NULL。

语法:

SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column = table2.column;

3.RIGHT JOIN(右连接)

返回右表中的所有行,以及左表中满足连接条件的行。如果左表中没有匹配的行,则结果中包含NULL。

语法:

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column = table2.column;

4.FULL JOIN(全连接)

返回两个表中的所有行。如果某一表中没有匹配的行,则结果中包含NULL。

语法:

SELECT columns
FROM table1
FULL JOIN table2
ON table1.column = table2.column;

5.CROSS JOIN(交叉连接)

返回两个表的笛卡尔积,即将每一行与另一表的每一行组合。

语法:

SELECT columns
FROM table1
CROSS JOIN table2;

6.SELF JOIN(自连接)

表示同一个表内部的连接,用于从同一个表中获取相关数据。

语法:

SELECT a.columns, b.columns
FROM table a, table b
WHERE a.common_column = b.common_column;

7.NATURAL JOIN(自然连接)

基于两个表中所有同名的列进行连接。

语法:

SELECT columns
FROM table1
NATURAL JOIN table2;

举例说明

假设有两个表

//`employee`表

id | name      | department_id
---|-----------|--------------
1  | Alice     | 1
2  | Bob       | 2
3  | Charlie   | 1


//`department`表

id | department_name
---|----------------
1  | HR
2  | IT
3  | Finance

1)INNER JOIN 示例

SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments
ON employees.department_id = departments.id;

结果

name    | department_name
--------|----------------
Alice   | HR
Bob     | IT
Charlie | HR

2)LEFT JOIN 示例

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.id;

结果

name    | department_name
--------|----------------
Alice   | HR
Bob     | IT
Charlie | HR

3)RIGHT JOIN 示例

SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.id;

结果

name    | department_name
--------|----------------
Alice   | HR
Bob     | IT
NULL    | Finance

4)FULL JOIN 示例

SELECT employees.name, departments.department_name
FROM employees
FULL JOIN departments
ON employees.department_id = departments.id;

结果

name    | department_name
--------|----------------
Alice   | HR
Bob     | IT
Charlie | HR
NULL    | Finance

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值