数据库内连接和外连接的区别(什么是内连接和外连接)

2023年 7月 30日 143.9k 0

在 SQL 中,连接(JOIN)是将两个或多个表根据它们之间的关联条件组合在一起的操作。

连接可以分为内连接(INNER JOIN)和外连接(OUTER JOIN)。

外连接又可以进一步细分为左连接(LEFT JOIN)、右连接(RIGHT JOIN)和全连接(FULL JOIN)。

这些连接类型的主要区别在于它们处理不匹配记录的方式。

图片[1]-数据库内连接和外连接的区别(什么是内连接和外连接)-不念博客

内连接(INNER JOIN)

内连接只返回两个表中关联条件匹配的记录。如果某个表中的记录在另一个表中没有匹配的记录,这些记录将不会出现在最终结果中。

SELECT A.id, A.name, B.address
FROM table_A A
INNER JOIN table_B B ON A.id = B.id;

左连接(LEFT JOIN)

左连接返回左表中的所有记录,以及右表中与左表匹配的记录。如果左表中的某条记录在右表中没有匹配的记录,那么结果中右表的字段将显示为 NULL。

SELECT A.id, A.name, B.address
FROM table_A A
LEFT JOIN table_B B ON A.id = B.id;

右连接(RIGHT JOIN)

右连接返回右表中的所有记录,以及左表中与右表匹配的记录。如果右表中的某条记录在左表中没有匹配的记录,那么结果中左表的字段将显示为 NULL。

SELECT A.id, A.name, B.address
FROM table_A A
RIGHT JOIN table_B B ON A.id = B.id;

全连接(FULL JOIN)

全连接返回左表和右表中的所有记录。如果左表中的某条记录在右表中没有匹配的记录,那么结果中右表的字段将显示为 NULL。反之,如果右表中的某条记录在左表中没有匹配的记录,那么结果中左表的字段将显示为 NULL。

SELECT A.id, A.name, B.address
FROM table_A A
FULL JOIN table_B B ON A.id = B.id;

总结

  • 内连接只返回匹配的记录;
  • 左连接返回左表的所有记录,以及右表中匹配的记录;
  • 右连接返回右表的所有记录,以及左表中匹配的记录;
  • 全连接返回左表和右表的所有记录,并用 NULL 填充不匹配的记录。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论