`

内连接 外连接 交叉连接 笛卡尔积

 
阅读更多
首先划分一下,连接分为三种:内连接、外连接、交叉连接 
 
内连接(INNER JOIN): 
    分为三种:等值连接、自然连接、不等连接 
     
外连接(OUTER JOIN): 
    分为三种: 
    左外连接(LEFT OUTER JOIN或LEFT JOIN) 
    右外连接(RIGHT OUTER JOIN或RIGHT JOIN) 
    全外连接(FULL OUTER JOIN或FULL JOIN) 
 
交叉连接(CROSS JOIN): 
    没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积

==================================================================================================

==================================================================================================

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. 笛卡尔积CROSS JOIN :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
-- 自然连接(会去除重复的列)
1)、自然连接(Naturaljoin)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而等值连接并不去掉重复的属性列。
2)、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
3)、自然连接与等值连接
在连接运算当中,一种最常用的连接是自然连接。
所谓自然连接就是在等值连接的情况下,当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉。
自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。
4)、等值连接与自然连接的区别:
4.1)等值连接中不要求相等属性值的属性名相同,而自然连接要求相等属性值的属性名必须相同,即两关系只有在同名属性才能进行自然连接。
4.2)等值连接不将重复属性去掉,而自然连接去掉重复属性,也可以说,自然连接是去掉重复列的等值连接。
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 例解左连接,右连接,全连接,内连接,交叉连接,自连接

    交叉连接返回第一个表中的每一行与第二个表中的每一行的笛卡尔积。这种连接不会考虑任何连接条件,而是简单地生成所有可能的组合。在上面的例子中,如果投票主表中有 6 条记录,投票者信息表中有 3 条记录,则交叉...

    SQL左连接,右连接,内连接,交叉连接,自连接

    交叉连接(有时也称为笛卡尔积)返回左表和右表中所有可能的组合。结果集中的记录数等于左表记录数乘以右表记录数。 **示例**:对于投票主表(voteMaster)和投票者信息表(voter),如果voteMaster表有3条记录,...

    用数据实例解说SQL内连接、外连接、全连接、交叉连接的运用与区别.doc

    这会产生一个巨大的结果集,每个订单都会与每个用户组合,形成一个笛卡尔积。 在实际应用中,选择合适的连接类型取决于你需要获取什么样的数据。理解这些连接的区别对于构建正确的SQL查询至关重要,以确保你得到的...

    数据库:笛卡尔积、内连接、左连接、右连接

    本篇文章将深入探讨四种基本的连接类型:笛卡尔积、内连接、左连接和右连接,以及它们在实际数据库操作中的应用。 首先,我们来理解笛卡尔积(Cartesian Product)。笛卡尔积源自数学概念,它表示两个集合的所有...

    二、MySQL连接查询学习笔记(多表连接查询:内连接,外连接,交叉连接详解)

    MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类: 1)sql 92标准:仅仅...

    SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接

    交叉连接也称作笛卡尔积,它将两个表格中的所有记录组合成一个新的表格。交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。 ```sql select * from book, stu ``` SQL连接类型之间的选择取决于具体...

    外连接,内连接 图文详解

    本文将详细解释五种主要的连接类型:外连接(外连接)、内连接(内连接)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、全连接(FULL JOIN)以及交叉连接(CROSS JOIN)。 1. **内连接(INNER JOIN)**: 内连接...

    SQL_左外连接_右外连接_全连接_内连接

    交叉连接也称为笛卡尔积,它返回左表的每一行与右表的每一行的组合。如果两个表分别有n和m行,结果将有n*m行。 ```sql SELECT a.*, b.* FROM table_a CROSS JOIN table_b; ``` 在实际应用中,选择合适的连接...

    自连接外连接

    交叉连接返回所有可能的行组合,通常称为笛卡尔积。这在实际应用中并不常用,但在某些特定场景下可能会有用处。 - **交叉连接示例**: ```sql SELECT t.*, s.* FROM teacher t CROSS JOIN student s; ``` 通过...

    数据库内外连接举例

    交叉连接(CROSS JOIN)也称为笛卡尔积,它返回第一个表中的每一行与第二个表中的每一行的组合,不基于任何特定的条件。如果`a`表有3行,`b`表有2行,交叉连接会产生3 * 2 = 6行的结果。 在使用外连接时,需要注意...

    右连接、左连接、全连接、内连接、交叉连接、自连接.pdf

    交叉连接返回两个表的笛卡尔积,即每个左表的记录与右表的每个记录组合。如果没有WHERE子句,结果将是左表的行数乘以右表的行数。这通常会产生大量的记录,除非有明确的筛选条件。 6. **自连接**: 自连接是将同...

    oracle 左连接 右连接学习

    交叉连接是将两个表的所有记录组合成一个结果集,生成一个笛卡尔积。例如: SELECT * FROM TableA CROSS JOIN TableB 这将生成一个笛卡尔积结果集,其中每个记录都是两个表中的记录的组合。 结论 Oracle 中的...

    数据库内连接、外连接.ppt.ppt

    最后,我们来看交叉连接(CROSS JOIN),也称为笛卡尔积。它将第一个表的每一行与第二个表的每一行进行组合,生成的结果集行数等于两个表的行数之积。交叉连接的SQL语句非常简单: ```sql SELECT * FROM 表名1 ...

    SQL左外连接,右外连接,全连接,内连接4种连接的区别[归类].pdf

    此外,还有交叉连接(CROSS JOIN),也称为笛卡尔积,它会返回左表的每一行与右表的每一行的组合,结果集的大小是两个输入表行数的乘积。 在SQL代码示例中,使用临时表`@TA`和`@TB`展示了不同类型的连接。内连接的...

    数据库表连接(内外、左右连接).docx

    交叉连接不使用任何连接条件,返回两个表所有可能的行组合,即两个表的笛卡尔积。结果集的大小是两个表行数的乘积。 在进行连接操作时,ON (join_condition) 子句用于定义连接条件,这些条件可以是列的等式比较、...

    数据库:左连接、右连接、全连接

    它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。 例如: SELECT * FROM table1 CROSS JOIN table2 四、连接操作的使用...

    Oracle外连接查询

    - **交叉连接(Cross Join)**:也称为笛卡尔积,它返回两个表的每一对组合,结果行数等于第一个表的行数乘以第二个表的行数。例如,`SELECT * FROM A CROSS JOIN B`。 - **自然连接(Natural Join)**:自然连接...

    【IT十八掌徐培成】Java基础第24天-04.分组查询-having-连接查询-笛卡尔积.zip

    当没有指定连接条件时,两个表的交叉连接(也称为笛卡尔积)会返回所有可能的行组合。如果表A有m行,表B有n行,那么结果集将有m*n行。但通常情况下,不希望在查询中出现笛卡尔积,因为它可能导致结果集非常大,消耗...

    数据库表连接(内外、左右连接).pdf

    交叉连接(CROSS JOIN)是最基础的连接类型,不带任何连接条件,它会返回两个表的笛卡尔积,即每个左表的行与右表的每一行组合,生成的结果集大小为两表行数的乘积。 举个例子,假设我们有两个表:`voteMaster`...

    数据库各种join连接

    Join连接可以分为交叉连接、内连接和外连接三种类型。 一、交叉连接(Cross Join) 交叉连接也叫笛卡尔积,返回的是两表的乘积。交叉连接有两种,显式的和隐式的,不带on子句。例如: 语句 1:隐式的交叉连接,...

Global site tag (gtag.js) - Google Analytics