关于左右连接

首先来看一下两张主要的表:
persons表
这里写图片描述
orders表
这里写图片描述
现在我们希望列出所有的人,以及他们的定购。

SELECT
    persons.last_name,
    persons.first_name,
    orders.order_no
FROM
    persons
LEFT JOIN orders ON persons.pid = orders.pid
ORDER BY
    persons.last_name

结果
这里写图片描述
这里是persons的左连接,以persons为主。所以结果中即是没有订单的人也会列出来。下面在来看一组SQL语句,将上边两张表对换位置:
SELECT
persons.last_name,
persons.first_name,
orders.order_no
FROM
orders
LEFT JOIN persons ON persons.pid = orders.pid
ORDER BY
persons.last_name

结果这里写图片描述
这次显示出来的就是以订单为主,即是没有人下的订单也会显示出来。
结论:左右连接中,左连接以左表为主,右连接以右表为主。左连接即使左表中没有匹配的行也显示出来,右连接亦然。

### 数据库左右连接的概念与用法 数据库中的左连接(Left Join)和右连接(Right Join)都属于外连接的一种形式,用于将两个表的数据进行关联查询。以下是它们的具体概念、区别以及用法: #### 左连接(Left Join) 左连接是一种外连接,它会返回左表中的所有记录,即使右表中没有匹配的记录,也会显示左表的所有行,而右表中对应的位置则会以 `NULL` 填充。其语法如下: ```sql SELECT * FROM left_table LEFT JOIN right_table ON left_table.key = right_table.key; ``` 例如,在学生表和成绩表之间进行左连接时,如果某个学生没有对应的分数记录,则成绩字段会显示为 `NULL`[^1]。 #### 右连接(Right Join) 右连接也是一种外连接,它会返回右表中的所有记录,即使左表中没有匹配的记录,也会显示右表的所有行,而左表中对应的位置则会以 `NULL` 填充。其语法如下: ```sql SELECT * FROM left_table RIGHT JOIN right_table ON left_table.key = right_table.key; ``` 例如,在学生表和成绩表之间进行右连接时,如果某条成绩记录没有对应的学生信息,则学生字段会显示为 `NULL`[^1]。 #### 区别 1. **数据来源**:左连接以左表为主,确保左表的所有记录都会出现在结果集中;右连接以右表为主,确保右表的所有记录都会出现在结果集中。 2. **空值处理**:左连接在右表无匹配记录时,右表字段填充为 `NULL`;右连接在左表无匹配记录时,左表字段填充为 `NULL`[^3]。 #### 示例代码 以下是一个具体的例子,展示如何使用左连接和右连接: ```sql -- 左连接示例 SELECT student.no, student.name, grade.grade FROM student LEFT JOIN grade ON student.no = grade.no; -- 右连接示例 SELECT student.no, student.name, grade.grade FROM student RIGHT JOIN grade ON student.no = grade.no; ``` #### 应用场景 - 左连接通常用于需要保留左表所有记录的场景,例如列出所有部门及其员工信息,同时包括没有员工的部门。 - 右连接适用于需要保留右表所有记录的场景,例如列出所有成绩记录及其对应的学生信息,即使某些成绩没有对应的学生[^1]。 ### 注意事项 在实际开发中,左连接更为常用,因为大多数情况下,人们更关注主表(通常是左表)的所有记录。此外,某些数据库系统(如 Access)不支持直接使用全连接(Full Join),可以通过 `UNION ALL` 将左连接和右连接的结果合并来实现类似功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值