左连接和右连接

关于左连接和右连接总结性的一句话:

左连接where只影向右表,右连接where只影响左表。

Left Join

select * from tbl1 Left Join tbl2 where tbl1.ID = tbl2.ID

左连接后的检索结果是显示tbl1的所有数据和tbl2中满足where 条件的数据。

简言之 Left Join影响到的是右边的表

Right Join

select * from tbl1 Right Join tbl2 where tbl1.ID = tbl2.ID

检索结果是tbl2的所有数据和tbl1中满足where 条件的数据。

简言之 Right Join影响到的是左边的表。


==============

全连接
select sno,name,sex
from students FULL JOIN majors ON students.mno=majors.mno
两边表中的内容全部显示
.自身连接
select t1.cno,t1.coursename,t1.pno,t2.coursename
from tab1 t1,tab1  t2 where t1.pno=t2.cno
采用别名解决问题。

左连接(LEFT JOIN)连接(RIGHT JOIN)是 SQL 查询中用于连接两个表的外连接方式,它们的核心区别在于主表的选择连接结果中数据的保留规则。 左连接以左表为主表,保留左表中的所有记录,并将表中与左表连接条件匹配的记录合并到结果中。如果表中没有匹配的记录,则表对应的字段值在结果中显示为 NULL。例如,当查询学生表与订单表的左连接时,所有学生记录都会保留,而未匹配订单的学生对应的订单字段为 NULL。 连接则相反,以表为主表,保留表中的所有记录,并将左表中与连接条件匹配的记录合并到结果中。如果左表中没有匹配的记录,则左表对应的字段值在结果中显示为 NULL。例如,当查询学生表与订单表的连接时,所有订单记录都会保留,而未匹配学生的订单对应的学生成员字段为 NULL。 左连接连接本质上是相互对称的,通过调整表的顺序可以实现相同的效果。例如,A LEFT JOIN B 的结果等同于 B RIGHT JOIN A。 在实际应用中,左连接更为常见,因为其逻辑上更容易理解:以左表为中心,补充表信息。连接的使用较少,但在特定场景下可能更直观[^2]。 ### 示例说明 假设存在两个表: - 学生表 `students`: ```sql id | name 1 | Alice 2 | Bob 3 | Charlie ``` - 订单表 `orders`: ```sql student_id | product 1 | 苹果 3 | 香蕉 4 | 橘子 ``` 左连接查询语句: ```sql SELECT students.id, students.name, orders.product FROM students LEFT JOIN orders ON students.id = orders.student_id; ``` 结果: ``` id | name | product 1 | Alice | 苹果 2 | Bob | NULL 3 | Charlie | 香蕉 ``` 连接查询语句: ```sql SELECT students.id, students.name, orders.product FROM students RIGHT JOIN orders ON students.id = orders.student_id; ``` 结果: ``` id | name | product 1 | Alice | 苹果 3 | Charlie | 香蕉 NULL| NULL | 橘子 ``` ### 注意事项 1. **ON 条件与 WHERE 过滤的区别**:`ON` 子句用于定义连接时的匹配逻辑,不满足条件的表行会被设为 NULL,但左表行仍保留(左连接)。而 `WHERE` 子句是在连接完成后进行过滤,可能导致排除左表或表的 NULL 行,从而失去外连接的意义[^2]。 2. **性能与可读性**:左连接连接的性能通常没有差异,但左连接更常见,逻辑上更直观。在编写查询时,应优先考虑查询的可读性。 3. **连接顺序的影响**:左连接连接通过调整表的顺序可以实现相同的结果,因此在编写查询时应根据实际需求选择合适的连接方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿甘带你学java

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值