返回

MySQL基础-左外连接、右外连接与自然连接

后端

外连接

外连接是表连接的一种,它允许您将两张或多张表连接起来,即使这些表之间没有匹配的行。外连接分为两种:左外连接和右外连接。

左外连接

左外连接是一种特殊类型的表连接,它将两张表连接起来,即使右表中没有与左表匹配的行,它也会返回左表中的所有行。左外连接的语法结构为:

SELECT 字段
FROM 左表
LEFT JOIN 右表
ON 左表.字段 = 右表.字段;

例如,我们有一张学生表和一张成绩表,学生表中存储了学生的基本信息,成绩表中存储了学生的分数。我们可以使用左外连接来查询所有学生的信息,即使他们没有成绩记录。

SELECT 学生.学号, 学生.姓名, 学生.性别, 成绩.分数
FROM 学生
LEFT JOIN 成绩
ON 学生.学号 = 成绩.学号;

上面的查询将返回所有学生的信息,即使他们没有成绩记录。对于没有成绩记录的学生,分数字段将返回NULL

右外连接

右外连接与左外连接类似,但它是从右表的角度来进行连接的。右外连接的语法结构为:

SELECT 字段
FROM 右表
RIGHT JOIN 左表
ON 右表.字段 = 左表.字段;

例如,我们有一张订单表和一张订单明细表,订单表中存储了订单的基本信息,订单明细表中存储了订单的详细内容。我们可以使用右外连接来查询所有订单的信息,即使这些订单没有明细记录。

SELECT 订单.订单号, 订单.下单时间, 订单.总金额, 订单明细.商品名称, 订单明细.数量
FROM 订单
RIGHT JOIN 订单明细
ON 订单.订单号 = 订单明细.订单号;

上面的查询将返回所有订单的信息,即使这些订单没有明细记录。对于没有明细记录的订单,商品名称数量字段将返回NULL

自然连接

自然连接是一种特殊的表连接,它只连接那些在连接列上具有匹配值的行的表。自然连接的语法结构为:

SELECT 字段
FROM 左表
NATURAL JOIN 右表;

例如,我们有一张学生表和一张成绩表,学生表中存储了学生的基本信息,成绩表中存储了学生的分数。我们可以使用自然连接来查询所有有成绩记录的学生的信息。

SELECT 学生.学号, 学生.姓名, 学生.性别, 成绩.分数
FROM 学生
NATURAL JOIN 成绩;

上面的查询将只返回那些在学号列上具有匹配值的行的信息。对于没有成绩记录的学生,该查询将不返回任何结果。

总结

左外连接、右外连接和自然连接都是非常有用的表连接类型,它们可以帮助您从不同的角度查询数据。在实际应用中,您需要根据自己的需要选择合适的表连接类型。