当前位置: 首页 > 编程笔记 >

SQL语句的并集UNION 交集JOIN(内连接,外连接)等介绍

姜天宇
2023-03-14
本文向大家介绍SQL语句的并集UNION 交集JOIN(内连接,外连接)等介绍,包括了SQL语句的并集UNION 交集JOIN(内连接,外连接)等介绍的使用技巧和注意事项,需要的朋友参考一下
1. a. 并集UNION SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2 b. 交集JOIN SELECT * FROM table1 AS a JOIN table2 b ON a.name=b.name c. 差集NOT IN SELECT * FROM table1 WHERE name NOT IN(SELECT name FROM table2) d. 笛卡尔积 SELECT * FROM table1 CROSS JOIN table2 与 SELECT * FROM table1,table2相同 2. SQL中的UNION 与UNION ALL的区别是,前者会去除重复的条目,后者会仍旧保留。 a. UNION SQL Statement1 UNION SQL Statement2 b. UNION ALL SQL Statement1 UNION ALL SQL Statement2 3. SQL中的各种JOIN SQL中的连接可以分为内连接,外连接,以及交叉连接(即是笛卡尔积) a. 交叉连接CROSS JOIN 如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积; 举例 SELECT * FROM table1 CROSS JOIN table2 等同于 SELECT * FROM table1,table2 一般不建议使用该方法,因为如果有WHERE子句的话,往往会先生成两个表行数乘积的行的数据表然后才根据WHERE条件从中选择。 因此,如果两个需要求交际的表太大,将会非常非常慢,不建议使用。 b. 内连接INNER JOIN 如果仅仅使用 SELECT * FROM table1 INNER JOIN table2 没有指定连接条件的话,和交叉连接的结果一样。 但是通常情况下,使用INNER JOIN需要指定连接条件。 -- 等值连接(=号应用于连接条件, 不会去除重复的列) SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column -- 不等连接(>,>=,<,<=,!>,!<,<>) 例如 SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column<>b.column -- 自然连接(会去除重复的列) c. 外连接OUTER JOIN 首先内连接和外连接的不同之处: 内连接如果没有指定连接条件的话,和笛卡尔积的交叉连接结果一样,但是不同于笛卡尔积的地方是,没有笛卡尔积那么复杂要先生成行数乘积的数据表,内连接的效率要高于笛卡尔积的交叉连接。 指定条件的内连接,仅仅返回符合连接条件的条目。外连接则不同,返回的结果不仅包含符合连接条件的行,而且包括左表(左外连接时), 右表(右连接时)或者两边连接(全外连接时)的所有数据行。 1)左外连接LEFT [OUTER] JOIN 显示符合条件的数据行,同时显示左边数据表不符合条件的数据行,右边没有对应的条目显示NULL 例如 SELECT * FROM table1 AS a LEFT [OUTER] JOIN ON a.column=b.column 2)右外连接RIGHT [OUTER] JOIN 显示符合条件的数据行,同时显示右边数据表不符合条件的数据行,左边没有对应的条目显示NULL 例如 SELECT * FROM table1 AS a RIGHT [OUTER] JOIN ON a.column=b.column 3)全外连接显示符合条件的数据行,同时显示左右不符合条件的数据行,相应的左右两边显示NULL
 类似资料:
  • SQL join 用于把来自两个或多个表的行结合起来。 SQL JOIN SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。 演示数据库 在本教程中,我们将使用 RUNOOB 样本数据库。 下面是选自 "Webs

  • 问题内容: 当我的SQL语句中只有一个内部联接时,它可以很好地工作。我尝试加入第二张表,现在出现一个错误,提示存在语法错误(缺少运算符)。这是怎么了 问题答案: 对于多表联接,您必须将多余的联接嵌套在方括号中: 基本上,对于除第一个表之外的所有其他表,都需要在原始“ FROM”表之前加上一个括号,并在匹配的JOIN“ on”子句上使用一个结束括号。

  • 我需要将priorityId设置为以下。有人能建议一个sql更新语句吗?我想我需要一个由Rid和Gid组成的组或自加入 非常感谢。

  • 问题内容: 我有这两个SQL语句,我需要做的是将它们连接到一个语句中,但是当我这样做时,结果是不合适的。:/ 这就是我加入他们的方式: 这样,“ wynajecia”和“ wizyty”中的数字相同,这是错误的。:/ 编辑: 有了这段代码,我得到: 正确的输出应为: 我设法通过以下代码获得正确的答案: 但是我不是,这是解决问题的正确方法。 问题答案: 考虑以下场景: TableA记录的ID:{1、

  • 问题内容: 我对编写sql很陌生,并且对联接有疑问。这是一个示例选择: 因此,假设我正在寻找所有嵌套在其中某个绿色小盒子的大盒子的名称。如果我理解正确,上述语法是获得与使用’join’关键字可获得的结果相同的另一种方法。 问题:上面的select语句对于正在执行的任务有效吗?如果没有,有什么更好的方法呢?语句是联接的语法糖还是它实际上在做其他事情? 如果您有任何与该主题相关的好材料的链接,我会很乐

  • 问题内容: 我有一个使用旧语法为Oracle编写的查询,现在我想将其转换为Access SQL。 这是我的查询: 什么是Access SQL中的等效项? 问题答案: 如果我还记得旧的Oracle外连接语法(已经有 很长时间了 ),则Access中的相应查询应为