左连接,右连接,全连接

SQL left (outer) join 语法
【作用】
左外连接(左连接):结果集既包括连接表的匹配行,也包括左连接表的所有行。  
【举例】
假设有这样两个表:
表1:
-------------------------
姓名      备注
aa        1111111
bb        2222222

cc        3333333


表2:
------------------------
姓名     年龄  性别
aa        22   男
tt        33   女
cc        44   男
gg        55   女


对于左外连接:
SELECT a.*,b.* 
FROM 表1 as a LEFT JOIN 表2 as b
ON a.姓名=b.姓名


则查询的结果为:
---------------------------------------
姓名       备注     年龄    性别
aa        1111111    22     男
bb        2222222    NULL   NULL 
cc        333333     44     男


create database left_join_demo

use left_join_demo
create table 表1 (姓名 varchar(50),备注 varchar(50))
create table 表2 (姓名 varchar(50),年龄 varchar(50),性别 varchar(50))
insert into 表1 Values ('aa',1111111),('bb',2222222),('cc',2222222)
insert into 表2 Values ('aa',22,'男'),('tt',33,'女'),('cc',44,'男'),('gg',55,'女')
select * from 表1
select * from 表2
SELECT a.*,b.* FROM 表1 as a LEFT JOIN 表2 as b ON a.姓名=b.姓名
在SQL中,左连接(LEFT JOIN)、连接(RIGHT JOIN)和全连接(FULL JOIN)是用于从两个或多个中检索相关数据的连接操作。它们之间的主要区别在于如何处理不匹配。 ### 左连接(LEFT JOIN) 左连接返回中的所有,即使中没有匹配。如果中没有匹配,则结果中的列将包含NULL值[^2]。例如,如果我们有两个`employees`和`departments`,并且我们想要获取所有员工的信息以及他们所属的部门名称,即使某些员工可能没有被分配到任何部门,我们可以使用左连接: ```sql SELECT employees.name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.id; ``` ### 连接(RIGHT JOIN) 连接左连接相反,它返回中的所有,即使中没有匹配。如果中没有匹配,则结果中的列将包含NULL值[^2]。例如,如果我们想获取所有部门的信息以及属于这些部门的员工,即使某些部门可能没有任何员工,我们可以使用连接: ```sql SELECT employees.name, departments.department_name FROM employees RIGHT JOIN departments ON employees.department_id = departments.id; ``` ### 全连接(FULL JOIN) 全连接返回中的所有。当某一在另一个中没有匹配时,结果中的对应列将包含NULL值。这意味着全连接会显示两个中的所有记录,不管是否有匹配[^1]。例如,如果我们想获取所有员工和所有部门的信息,不管员工是否被分配到了部门,或者部门是否有员工,我们可以使用全连接: ```sql SELECT employees.name, departments.department_name FROM employees FULL JOIN departments ON employees.department_id = departments.id; ``` ### 使用方法 - **内连接**(INNER JOIN)只返回两个匹配。 - **左连接**(LEFT JOIN)返回中的所有,以及匹配。 - **连接**(RIGHT JOIN)返回中的所有,以及匹配。 - **全连接**(FULL JOIN)返回两个中的所有,不匹配的部分用NULL填充。 通过使用这些不同的连接类型,可以灵活地控制查询结果中包含的数据。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值