数据库中查询结果的并集和交集是怎么写的?

数据库中查询结果的并集和交集是怎么写的?,第1张

写法:

A 并 B 去掉重复记录----union

select empno, ename ,salary ,deptno from employee_ccy where deptno=10

union

select empno, ename ,salary ,deptno from employee_ccy where salary>100

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。从发展的历史看,数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。

集合运算

         这是一种二目运算,一共有四种四种运算符:并,差,交,笛卡尔积;

语法:

         查询语句

                  [UNION | UNIONALL | INTERSECT | MINUS]

         查询语句

UNION(并集)

返回若干个查询结果,但是重复的不显示

Eg:SELECT *FROM dept

                  UNION

         SELECT*FROM dept WHERE deptno = 10

注:查询 *** 作编写的过程中尽量使用UNION , UNION ALL代替 OR,提高查询速度

例:

         查询工作是销售和clerk的;

         SELECT*

FROM emp WHEREjob = ‘saleman’ or job = ‘clerk’

另一种方式:

SELECT * FROMemp WHERE job = ‘SALESMAN’

         UNION

SELECT * FROMemp WHERE job = ‘CLERK’

UNION ALL(并集)

返回若干个查询结果,但是重复的也显示

Eg:SELECT * FROM dept

                  UNION ALL

         SELECT*FROM dept WHERE deptno = 10

MINUS(差集)

返回若干个结果中不同的部分;

Eg:SELECT * FROM dept

                   MINUS

         SELCT*FROM dept WHERE deptno = 10

INTERSECT(交集)

显示查询结果中相同的部分;

Eg:SELECT * FROM dept

                   INTERSECT

         SELCT*FROM dept WHERE deptno = 10

————————————————

A 并 B 去掉重复记录----union

select empno, ename ,salary ,deptno from employee_ccy where deptno=10

union

select empno, ename ,salary ,deptno from employee_ccy where salary>100

--union all 不排序,不去重复

select empno, ename ,salary ,deptno from employee_ccy where deptno=10 union all

select empno, ename ,salary ,deptno from employee_ccy where salary>100

---交集-----intersect

select empno, ename ,salary ,deptno from employee_ccy where deptno=10

intersect

select empno, ename ,salary ,deptno from employee_ccy where salary>100

--差集--------minus

select empno, ename ,salary ,deptno from employee_ccy where deptno=10

minus

select empno, ename ,salary ,deptno from employee_ccy where salary>100

-------------用两个结果集的差集 ,获得

select deptno,dname ,location from department_ccy where deptno in(select deptno from department_ccy

minus

select distinct deptno from employee_ccy )

希望对你有帮助


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9907969.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存