sql语句查询笛卡尔积 2个表的笛卡尔积怎么用sql语句表示?

[更新]
·
·
分类:行业
5067 阅读

sql语句查询笛卡尔积

2个表的笛卡尔积怎么用sql语句表示?

2个表的笛卡尔积怎么用sql语句表示?

第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小 SELECT * FROM table1 CROSS JOIN table2 select a.*,b.* from table1 a ,table2 b 笛卡尔乘积是指在数学中,两个 集合 X和 Y的笛卡尓积(Cartesian product),又称 直积。
表示为 X × Y,第一个对象是 X的成员而第二个对象是 Y的所有可能 有序对的其中一个成员。假设集合A{a, b},集合B{0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。A表示所有声母的集合,B表示所有韵母的集合,那么A和B的笛卡尔积就为所

SQL联合查询?

CROSS JOIN交叉连接。是一种没有任何限制条件的连接方式,结果为笛卡尔积。SQL语法如下:
上面SQL等同于:
INNER JOIN(默认是JOIN)内连接。在表中存在至少一个匹配时返回行,可以理解为两张表中同时符合某种条件的行的组合。内连接还分为等值连接、不等连接和自连接。SQL语法如下:
等值连接:使用“”作为连接条件
不等连接:没有使用“”作为连接条件
自连接:自己连接自己,即连接的表只有一张
LEFT JOIN左连接。外连接的一种,从左表(table1)返回所有的行,即使右表(table2)中没有匹配,如果右表中没有匹配,则结果为 NULL。SQL语法如下:
RIGHT JOIN右连接。外连接的一种,从右表(table2)返回所有的行,即使左表(table1)中没有匹配,如果左表中没有匹配,则结果为 NULL。SQL语法如下:
FULL JOIN全连接。外连接的一种,只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行,集合了 LEFT JOIN 和 RIGHT JOIN 的结果。SQL语法如下:
其中,MySQL不支持FULL JOIN,可使用LEFT JOIN 、UNION、RIGHT JOIN 结合实现FULL JOIN的查询,示例:
UNION联合查询(去重)。用于合并两个或多个 SELECT 语句的结果集。UNION 内部的每个 SELECT 语句必须拥有相同数量和相同顺序的列,列也必须拥有相似的数据类型。SQL语法如下:
注:UNION查询的结果中,不存在重复的值。
UNION ALL联合查询(不去重)。用于合并两个或多个 SELECT 语句的结果集。UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。SQL语法如下:
或者:
注:
UNION ALL查询的结果中,允许存在重复的值。
使用UNION或者UNION ALL时,只能在最后一个SELECT语句使用ORDER BY命令。