首先划分一下,连接分为三种:内连接、外连接、交叉连接
内连接(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
-- 自然连接(会去除重复的列)
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
本来来自于:
http://www.cnblogs.com/jinianjun/archive/2011/11/08/2240525.html
分享到:
相关推荐
在数据库查询中,笛卡尔乘积(Cartesian Product)是一个重要的概念,尤其在理解SQL查询的基础操作时。本文将深入探讨笛卡尔乘积的概念、作用以及如何在SQL语句中实现它。 笛卡尔乘积是两个集合的组合,其中每个...
模糊向量笛卡尔乘积是模糊数学中的一个重要概念,它扩展了传统数学中笛卡尔乘积的概念,使得在处理不确定性和模糊性时更加灵活。在MATLAB中实现模糊向量的笛卡尔乘积,可以方便地进行模糊系统的设计、分析和仿真。...
实验内容: 已知所给集合 A 和 B,求 A 与 B 的笛卡儿乘积 C(C=A×B)。 ii.实验要求: 复习笛卡儿乘积的定义,实验由一人一组完成。所编程序能够通过编译,并 能够实现求两个给定集合的笛卡儿乘积
令G为具有顶点集V(G)和边集E(G)的有限连接简单图。 如果对于每个顶点v∈V(G),v的闭合邻域包含的函数值为1的顶点多于−1...在本文中,我们计算m = 3、4、5时两个路径Pm和Pn的笛卡尔乘积的有符号控制数。和任意的
在实际应用中,"笛卡尔乘积判断"可能涉及到更复杂的情况,比如判断两个集合的笛卡尔积是否包含特定的元素组合,或者比较两个集合的笛卡尔积是否相等。这可能需要在算法中加入额外的逻辑来满足特定条件。 总的来说,...
标题中的“毕业设计MATLAB_求集合的笛卡尔乘积.zip”表明这是一个关于MATLAB编程的毕业设计项目,主要目标是实现两个或多个集合的笛卡尔积计算。笛卡尔积是指从两个或多个集合中各取一个元素组合成新的元组,形成的...
为了更好地向顾客展示商品的多样性和选项,电商网站往往会使用一种名为“笛卡尔乘积”的算法来实现这一功能。本文就将详细介绍基于JavaScript实现笛卡尔乘积算法,在商品发布中的应用。 首先,我们来了解什么是...
在数学中,两个集合X和Y的笛卡尓乘积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积...
笛卡尔乘积,源于法国哲学家、数学家笛卡尔的理论,是数学中的一种基本运算,用于构建新的集合。这个概念在多个领域的数学问题中都扮演着重要角色,包括组合数学、图论、数据库理论以及计算机科学。笛卡尔积允许我们...
JavaScript算法源代码(例如:二叉搜索树、笛卡尔乘积、线性搜索、存储桶排序、DFS、 Kruskal算法、欧几里,等等) 链表、双链表、队列、Stack、哈希表、堆 - 最大和最小堆、优先队列、Trie、树、二叉搜索树、AVL树...
在.NET C#编程中,笛卡尔积是一种数学概念,它用于计算两个或多个集合的所有可能组合。在给定的代码示例中,我们看到一个名为`CartesianProduct`的方法,这个方法可以计算任意数量的`List<T>`类型的集合的笛卡尔积。...
在SQL查询中,连接查询是将两个或多个表的数据结合在一起的重要操作,这对于数据分析和信息检索至关重要。本文将深入探讨几种主要的SQL连接查询类型,包括内连接(INNER JOIN)、外连接(FULL JOIN、LEFT JOIN、...
简单研究发现,只要 ta 结果集内部先完成表连接,再和外部连接,就不至于产生笛卡尔乘积了,因为在 ta 结果集里,我们可以 STAFF_EVENT b 和 EVENT_Q a 先完成连接,他们是有连接条件的,条件是 a.event_id = b....
SQL中的连接操作是数据库查询中不可或缺的部分,它们用于合并来自两个或更多表的数据。以下是关于SQL连接的不同类型及其详细解释: 1. **内连接(Inner Join)**: 内连接返回两个表中存在匹配的行。这通常通过在`...
通过学习n元有序组和笛卡尔乘积,我们可以更好地理解和应用这些概念在实际生活中的应用,并提高我们的数学思维和分析能力。 在课堂练习中,我们可以通过证明A×(B∪C)=(A×B)∪(A×C)来加深对笛卡尔乘积的理解,并...
交叉连接(有时也称为笛卡尔积)返回左表和右表中所有可能的组合。结果集中的记录数等于左表记录数乘以右表记录数。 **示例**:对于投票主表(voteMaster)和投票者信息表(voter),如果voteMaster表有3条记录,...