SQL中的left outer join,inner join,right outer join用法详解
SQL 中的左外连接、内连接、右外连接用法详解 SQL 中的连接操作是数据库管理系统中最基本的操作之一,它能够将多个表中的数据结合起来,生成一个新的结果集。本文将对 SQL 中的左外连接、内连接、右外连接进行详细的讲解。 关系代数合并数据 关系代数是 E.F.Codd 于 1970 年提出的,它是合并数据集合的理论基础。在关系代数的形式化语言中,用表或者数据集合表示关系或者实体,用行表示元组,用列表示属性。关系代数包含以下 8 个关系运算符: 1. 选取――返回满足指定条件的行。 2. 投影――从数据集合中返回指定的列。 3. 笛卡尔积――是关系的乘法,它将分别来自两个数据集合中的行以所有可能的方式进行组合。 4. 并――关系的加法和减法,它可以在行的方向上合并两个表中的数据,就像把一个表垒在另一个表之上一样。 5. 交――返回两个数据集合所共有的行。 6. 差――返回只属于一个数据集合的行。 7. 连接――在水平方向上合并两个表,其方法是将两个表中在共同数据项上相互匹配的那些行合并起来。 8. 除――返回两个数据集之间的精确匹配。 各种类型的连接 在关系代数中,连接运算是由一个笛卡尔积运算和一个选取运算构成的。SQL 提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。 1. 内连接(Inner Join):只连接匹配的行。 2. 左外连接(Left Outer Join):包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行。 3. 右外连接(Right Outer Join):包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行。 4. 全外连接(Full Outer Join):包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。 5. (H)(theta)连接:使用等值以外的条件来匹配左、右两个表中的行。 6. 交叉连接(Cross Join):生成笛卡尔积――它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配。 在 SQL 中,可以使用 FROM 子句指定连接类型,例如: * CROSS JOIN:生成笛卡尔积――所有可能的行对。 * INNER JOIN:仅对满足连接条件的 CROSS 中的列。 * LEFT OUTER JOIN:一个表满足条件的行,和另一个表的所有行。 * RIGHT OUTER JOIN:与 LEFT 相同,但两个表的角色互换。 * FULL OUTER JOIN:LEFT OUTER 和 RIGHT OUTER 中所有行的超集。 内连接(Inner Join) 内连接是最常见的一种连接,它也被称为普通连接,而 E.FCodd 最早称之为自然连接。例如: SELECT * FROM t_institution i INNER JOIN t_teller t ON i.inst_no = t.inst_no WHERE i.inst_no = "5801" 等价于早期的连接语法: SELECT * FROM t_institution i, t_teller t WHERE i.inst_no = t.inst_no AND i.inst_no = "5801" 左外连接(Left Outer Join) 左外连接是将左边表的全部行与右边表中的匹配行连接起来,例如: SELECT * FROM t_institution i LEFT OUTER JOIN t_teller t ON i.inst_no = t.inst_no WHERE i.inst_no = "5801" 右外连接(Right Outer Join) 右外连接是将右边表的全部行与左边表中的匹配行连接起来,例如: SELECT * FROM t_institution i RIGHT OUTER JOIN t_teller t ON i.inst_no = t.inst_no WHERE i.inst_no = "5801" 全外连接(Full Outer Join) 全外连接是将左、右两个表的全部行连接起来,例如: SELECT * FROM t_institution i FULL OUTER JOIN t_teller t ON i.inst_no = t.inst_no WHERE i.inst_no = "5801" SQL 中的左外连接、内连接、右外连接都是连接操作的重要组成部分,它们都可以用于合并多个表中的数据,生成一个新的结果集。但是,每种连接类型都有其特点和应用场景,需要根据具体情况选择合适的连接类型。
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助