`
bjxagu
  • 浏览: 166571 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

SQL 交集,差集,并集,笛卡尔积

阅读更多

1 交集 Join
1) inner join 其处理结果与等值/自然连接相同

mssql :
-- mssql 中 inner join   连接需要 on Connection条件 否则会报错, mysql 不会,其结果等于cross join

select * from Major m  inner JOIN  
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo

mysql:
-- 其结果等于 crose join
select * from Major m inner join  Department d ;

-- 等值连接
select m.*,d.* from Major m inner  join   Department d on m.dptId = d.dptId;
2) left join /left outer join 左连接/左外连接
在sql 中, left join 为 left outer join 的缩写
mssql:
select * from Major m   left  outer  JOIN  
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
mysql:
select * from Major m   left    join `department` d on m.dptId = d.dptId;

3) right join/right outer join 右连接/右外连接
mssql:
select * from Major m   right  outer  JOIN  
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
mysql:
select * from Major m   right outer    join `department` d on m.dptId = d.dptId;

4) full join 全连接
mssql:
a)
select * from Major m  FULL OUTER JOIN  
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
b)
select * from Major m   left  outer  JOIN  
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
union
select * from Major m   right  outer  JOIN  
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
c)
select * from Major m   left  outer  JOIN  
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
union all
select * from Major m   right  outer  JOIN  
dbo.DepNmOrSubjectNm d on m.DepNoOrSubjectNo =d.DepNoOrSubjectNo
where m.DepNoOrSubjectNo is null

mysql:
mysql 5.0版本还不支持 full join ,但可以采用 join + union方法实现,详细可以参考:
http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/
--  
全连接 == 一个左连接 + 一个右连接 + union(去掉相同行)
a)select * from Major m  left outer join `department` d on m.dptId = d.dptId
union  
select * from Major m  right outer join `department` d on m.dptId = d.dptId
b)select * from Major m  left outer join `department` d on m.dptId = d.dptId
union  all
select * from Major m  right outer join `department` d on m.dptId = d.dptId
where m.dptId is null
--大力提倡使用b)
尤其是在处理很大的记录集时, union all 不会进行排序及消除相同的行(消除相同的行可能通过第二个join的条件进行实现),所以可以节省不少时间.
2. 差集 (not in)
sql:
select * from Major m where m.dptId not in(select dptId from department )
差集中, mysql 与 mssql 语句可以直接采用 not in 来实现

3. 并集 union
mssql:
-- union  并, 默认取消相同 行
select * from Major m
union
select * from Major tm

-- union full 会有重复记录
select * from Major m
union all
select * from Major tm

mysql:
-- union 默认会取消重复选项
select * from Major `major`
union  select * from Major mj ;
-- union all 不会取消重复选项
select * from Major m
  union  all
select * from Major tm

4. 笛卡尔积
mssql:
-- 笛卡尔
select * from Major cross  join  
dbo.DepNmOrSubjectNm

mysql:
-- 笛卡尔集
select * from Major m cross join `department` d;

带条件的笛卡尔积与等值连接功能相同.

分享到:
评论

相关推荐

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

    主要介绍了SQL语句的并集UNION,交集JOIN(内连接,外连接),交叉连接(CROSS JOIN笛卡尔积),差集(NOT IN) ,需要的朋友可以参考下

    Microsoft SQL SERVER 2008技术内幕 T-SQL查询

    第二章“集合论和谓词逻辑”是理解SQL查询的基础,它探讨了集合的概念,如交集、并集、差集和笛卡尔积,这些都是SQL查询中的基本运算。同时,谓词逻辑是表达查询条件的关键,书中会介绍如何使用WHERE子句以及比较...

    2009年上半年信息处理技术员考试上午试题及答案

    在准备信息处理技术员的考试时,考生需要熟悉这些基本的集合运算,包括并集、交集、差集以及笛卡尔积,并理解它们在实际问题中的应用。同时,还需要具备分析和解决有歧义问题的能力,能够从题目描述中准确地解读出所...

    GIS关系数据库SQL空间扩展算子的实现.pdf

    例如,这些运算符可能包括几何对象的交集、并集、差集和笛卡尔积等,而函数可能涉及计算距离、面积、形状相似度等空间特性。这些新的语句和运算符使得用户能够更精确地描述和执行复杂的空间查询。 其次,文章讨论了...

    sql数据库练习题.pdf

    最后,通过实际的例题,我们可以看到如何进行集合运算,如求两个关系的并集、交集、差集以及笛卡尔积。此外,还有表连接操作,例如关系R1和R2通过某种关联字段进行连接后形成R3。这些练习题有助于深化对SQL数据库...

    关系代数运算与SQL查询的对应关系

    它通过一套严谨的运算规则,包括并集(Union)、差集(Difference)、交集(Intersection)、笛卡尔积(Cartesian Product)、选择(Selection)、投影(Projection)、连接(Join)和除法(Division),来表达和...

    数据库原理及应用教程第3版课后题答案.doc

    第二章主要关注数据操作,包括选择、投影、交集、并集、差集和笛卡尔积等基本操作。此外,还提到了关系代数和关系演算是如何表示这些操作的,并强调了属性、同质性和完整性控制的概念,比如参照完整性和实体完整性的...

    Morgan Kaufmann - Joe Celkos Thinking in Sets (Jan 2008)

    本书深入浅出地讲解了集合的概念,如并集、交集、差集以及笛卡尔积,以及如何在SQL中实现这些操作。 1. **集合操作基础**:书中首先介绍了集合的基本概念,包括集合的定义、元素、空集和非空集的区别,以及集合的...

    SQL权威指南 第4版

    5. **集合运算**:涵盖了并集、交集和差集的操作,以及集合的联合、笛卡尔积等高级用法。 6. **分组与聚合**:讲解了GROUP BY和HAVING子句的使用,以及SUM(), COUNT(), AVG(), MAX(), MIN()等聚合函数的应用。 7. ...

    数据库系统原理课件:作业讲评 2_4_1ppt.ppt

    其中涉及到的关系代数操作主要包括选择(Selection)、投影(Projection)、并集(Union)、差集(Difference)以及笛卡尔积(Cartesian Product)等。 1. 选择(Selection):例如,`model( бspeed>3.00 (PC) )` ...

    SQL语句的查询优化分析.pdf

    关系代数中的基本操作包括并集(union)、差集(difference)、笛卡尔积(cartesian product)、投影(projection)和选择(selection)。组合操作如交集(intersection)、连接(join)、自然连接(natural join)...

    江西师大数据库习题及答案

    对于关系 R 和 S,我们需要计算它们的并集、差集、交集和笛卡尔积。并集操作包括 R 和 S 中所有不重复的元组;差集是属于 R 但不属于 S 的元组;交集则是同时存在于 R 和 S 中的元组;笛卡尔积是 R 中每一行与 S 中...

    数据库系统概论关系数据库.pptx

    基本操作包括选择、投影、并集、差集和笛卡尔积。这些操作具有集合操作的特性,处理的对象和结果都是集合。关系代数和关系演算是两种表达查询请求的形式化语言,SQL是结合两者特性的语言,提供非过程化的查询方式,...

    离散数学与应用课件

    本章将探讨集合的性质,如并集、交集、差集和笛卡尔积。同时,关系的概念也将被介绍,包括关系的定义、性质(如自反、对称、传递等)、闭包运算以及关系的矩阵表示。此外,函数作为一种特殊的二元关系,其定义、性质...

    数据库课件

    - **集合运算**: 包括并集、交集、差集和笛卡尔积等。 - **关系运算**: 如选择、投影、连接和除法等。 - **更新操作**: 包括插入、删除和修改操作。 **3. 关系语言** - **特点**: 关系语言是一种高度非过程化的...

    第8讲:基本SQL.ppt

    SQL语言的构建基础是关系代数,它包括选择、投影、并、差、笛卡尔积、连接等操作。SQL在关系代数的基础上,增加了如子查询、分组、聚合函数、排序等高级功能,同时提供了更直观的语法,使用户能更容易地进行数据操作...

    mysql进阶(二).pdf

    1.1. 查询时,可以进行笛卡尔积查询,即不设置任何关联条件,但通常这会产生大量无用结果。例如,`select * from dept,emp;`会返回两个表所有行的组合。 1.2. 内连接查询(INNER JOIN)是常用的关联查询方式,它只...

    《数据库系统概念》(第五版影印版)高级教育出版社课后答案

    - **关系代数操作**:选择、投影、并集、差集、笛卡尔积、连接、除法等,用于执行数据查询。 - **扩展关系代数操作**:如自然连接、外部连接等,提供更复杂的数据处理能力。 - **空值处理**:在关系数据库中处理不...

Global site tag (gtag.js) - Google Analytics