LEFT JOIN RIGHT JOIN INNER JOIN 区别(带用法)

在关系型数据库中,JOIN操作用于将两个或多个表的行组合在一起,基于这些表之间的共同列。常见的JOIN类型有LEFT JOIN、RIGHT JOIN和INNER JOIN。本文将介绍这三种JOIN类型的区别以及它们的用法。

INNER JOIN(内连接)

内连接是最常用的JOIN类型,它会返回两个表中具有匹配值的行。如果某个表中的行在另一个表中没有匹配的值,则不会返回该行。

语法:

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

示例: 假设我们有两个表,一个是学生表(students),另一个是成绩表(scores)。

学生表(students):

idname
1张三
2李四
3王五

成绩表(scores):

student_idgrade
190
285
395

我们想要查询所有学生的姓名和他们的成绩。可以使用以下SQL语句:

SELECT students.name, scores.grade
FROM students
INNER JOIN scores
ON students.id = scores.student_id;

查询出来的内容如下:

namegrade
张三90
李四85
王五95

LEFT JOIN(左连接)

左连接会返回左表中的所有行,即使在右表中没有匹配的值。如果在右表中没有匹配的值,则会返回NULL。

语法:

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

示例: 假设我们有以下两个表:

学生表(students):

idname
1张三
2李四
3王五

成绩表(scores):

student_idgrade
190
395

如果我们想要查询所有学生的姓名和他们的成绩,即使有些学生没有成绩,可以使用以下SQL语句:

SELECT students.name, scores.grade
FROM students
LEFT JOIN scores
ON students.id = scores.student_id;

查询出来的内容如下:

namegrade
张三90
李四NULL
王五95

RIGHT JOIN(右连接)

右连接与左连接相反,它会返回右表中的所有行,即使在左表中没有匹配的值。如果在左表中没有匹配的值,则会返回NULL。

语法:

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

示例: 使用上面的学生表和成绩表,

学生表(students):

idname
1张三
2李四
3王五

成绩表(scores):

student_idgrade
190
395

如果我们想要查询所有学生的成绩,即使有些学生没有成绩,可以使用以下SQL语句:

SELECT students.name, scores.grade
FROM students
RIGHT JOIN scores
ON students.id = scores.student_id;

查询出来的内容如下:

namegrade
张三90
王五95

总结:

  • left join: 包含左表的所有行,对应的右表行可能为空

  • right join: 包含右表的所有行,对应的左表行可能为空

  • inner join: 只包含左右表都匹配并且不为空的行

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值