内连接、左连接、右连接

弄个例题,直观一点。两个表:
--表stu
id  name  
1,  Jack
2,  Tom
3,  Kity
4,  nono
--表exam
id   grade
1,   56
2,   76
11,  89

内连接 (显示两表id匹配的)
select stu.id,exam.id,stu.name, exam.grade from stu inner join exam on stu.id=exam.id
stu.id   exam.id  name     grade
--------------------------------
1 1 Jack 56
2 2 Tom 76


左连接(显示join 左边的表的所有数据,exam只有两条记录,所以stu.id,grade 都用NULL 显示)
select stu.id,exam.id,stu.name, exam.grade from stu left join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
3 NULL Kity NULL
4 NULL nono NULL

右连接(与作连接相反,显示join右边表的所有数据)
select stu.id,exam.id,stu.name, exam.grade from stu right join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
NULL 11 NULL 89

在数据库操作中,内连接(Inner Join)、左连接(Left Join连接(Right Join)都是用来合并两个或更多表数据的SQL操作,它们的主要区别在于返回结果集的方式: 1. **内连接 (Inner Join)**: - 当两个表之间的记录满足某个特定条件时(即连接条件两边都有匹配的数据),这两个表的行才会出现在结果集中。 - 如果有任何一方的记录不符合连接条件,则该记录不会出现在结果中。 - 示例:查询学生课程表中的信息,只有当学生选了课程时,两者的组合才会出现在结果里。 2. **左连接 (Left Join)**: - 左侧表(也称为主表)的所有记录都会保留在结果集中,即使侧表没有匹配的数据,也会将左侧表的默认值填充(通常是NULL)。 - 如果侧表有匹配,则结果包含两个表的数据;如果没有匹配,侧列将显示NULL值。 - 示例:查找所有学生及其所选课程,包括未选课的学生他们的课程信息。 3. **连接 (Right Join)**: - 类似于左连接,但这次是侧表的所有记录会保留下来,左侧表没有匹配的数据则显示NULL。 - 结果集中左侧表的记录总是存在,侧表的记录可能存在也可能不存在。 - 示例:查询所有课程及其选课学生,即使有些课程还没有学生选择,也会列出课程信息。 总结来说,内连接只返回共同存在的数据,而左连接连接分别返回左侧或侧表的所有数据,并通过NULL值补充缺失的部分。在实际应用中,选择哪一种取决于你需要得到的结果是否包含完整的左侧或侧表信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值