oracle中内连接和外连接的区别-Oracle

admin2年前 (2024-06-05)基础运维知识607
点击下载TXT

Oracle 中内连接和外连接的区别

定义:

  • 内连接 (INNER JOIN):仅返回两个或更多表中所有匹配行的数据。
  • 外连接:返回两个或更多表中所有匹配行的数据,以及来自仅存在于一个表中的行。

类型:

外连接有三种类型:

  • 左外连接 (LEFT OUTER JOIN):返回左表中的所有行,以及与之匹配的右侧表中的行。
  • 右外连接 (RIGHT OUTER JOIN):返回右表中的所有行,以及与之匹配的左侧表中的行。
  • 全外连接 (FULL OUTER JOIN):返回来自两个表的行,即使行之间没有匹配。

区别:

特征 内连接 左外连接 右外连接 全外连接
匹配原则 仅匹配行 左侧表匹配 右侧表匹配 两侧表匹配
返回行 匹配行 左侧表所有行 右侧表所有行 两侧表所有行
空值处理 仅显示匹配行 用 NULL 填充右侧表空值 用 NULL 填充左侧表空值 用 NULL 填充两侧表空值

举例:

假设我们有两个表:

  • 表 A:id, name
  • 表 B:id, address

内连接:

SELECT *
FROM A
INNER JOIN B
ON A.id = B.id;
登录后复制

返回:仅具有匹配 id 的行。

左外连接:

SELECT *
FROM A
LEFT OUTER JOIN B
ON A.id = B.id;
登录后复制

返回:所有来自表 A 的行,以及具有匹配 id 的来自表 B 的行(如果有)。非匹配的行用 NULL 填充。

示例查询:

以下查询使用左外连接将两个表中的数据连接起来,并显示所有客户及其地址:

SELECT customers.name, orders.order_date, products.product_name
FROM customers
LEFT OUTER JOIN orders
ON customers.id = orders.customer_id
LEFT OUTER JOIN products
ON orders.product_id = products.id;
登录后复制

通过理解内连接和外连接之间的区别,开发人员可以有效地使用这些连接来提取来自不同表的数据,并满足特定的数据查询要求。

相关文章

怎么启动oracle监听器-Oracle

如何启动 Oracle 监听器? 启动步骤: 检查监听器状态:使用命令 lsnrctl status 检查监听器状态。如果监听器未运行,将显示以下错误消息: LSNRCTL for Linux:...

oracle解释计划怎么看-Oracle

如何解读 Oracle 解释计划 Oracle 解释计划是数据库提供的关于 SQL 语句执行计划的信息。它提供了对语句如何执行以及为什么以这种方式执行的深入见解。了解如何解读解释计划对于优化查询性能...

oracle怎么查看所有表-Oracle

如何查看 Oracle 中的所有表 要查看 Oracle 数据库中的所有表,可以使用以下查询: SELECT table_name FROM user_tables;登录后复制 此查询将返回您当前用...

oracle未选定行怎么解决-Oracle

解决 Oracle 未选定行问题 当在 Oracle 数据库中执行查询时,有时可能会遇到未选定行的错误。这可能是由于多种原因造成的,包括: 1. 模糊查询 模糊查询使用通配符(例如 % 或 _)来匹...

navicat怎么引入sql文件-navicat

如何在 Navicat 中导入 SQL 文件 Navicat 是一款流行的数据库管理工具,可用于管理各种数据库系统,包括 MySQL、Oracle 和 PostgreSQL。导入 SQL 文件是 N...

oracle怎么打开数据库-Oracle

如何打开 Oracle 数据库 打开数据库的步骤: 打开 Oracle 数据库客户端。 连接到数据库服务器。 使用 SQLPLUS 命令打开数据库。 具体步骤: 1. 打开 Oracle 数据库...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。