MySQL学习(四)集合运算&练习题

本文详细介绍了MySQL中的集合运算,包括UNION、INTERSECT(通过INNER JOIN实现)、EXCEPT(通过NOT IN实现)以及对称差的概念。此外,还讲解了JOIN操作,如INNER JOIN、SELF JOIN、OUTER JOIN(左、右、全外)以及多表JOIN和非等值JOIN。最后,给出了多个练习题来巩固所学知识。
摘要由CSDN通过智能技术生成

集合在数学领域表示“各种各样的事物的总和”, 在数据库领域表示记录的集合. 具体来说,表、视图和查询的执行结果都是记录的集合, 其中的元素为表或者查询结果中的每一行。
在标准 SQL 中, 分别对检索结果使用 UNION, INTERSECT, EXCEPT 来将检索结果进行并,交和差运算, 像UNION,INTERSECT, EXCEPT这种用来进行集合运算的运算符称为集合运算符。
在这里插入图片描述

集合运算符的使用

  • 表的并集–UNION
    用法:
SELECT product_id, product_name
  FROM product
 UNION
SELECT product_id, product_name
  FROM product2;

需注意点是 UNION 等集合运算符通常都会除去重复的记录,需要包含重复行,只需要在 UNION 后面添加 ALL 关键字就可以了。
UNION 与 OR 谓词区别:对于同一个表的两个不同的筛选结果集, 使用UNION 对两个结果集取并集, 和把两个子查询的筛选条件用 OR 谓词连接,会得到相同的结果, 但倘若要将两个不同的表中的结果合并在一起,就不得不使用 UNION 了。而且, 即便是对于同一张表, 有时也会出于查询效率方面的因素来使用 UNION。

  • 表的交集–INTERSECT
    遗憾的是,MySQL 8.0 不支持交运算INTERSECT,需要用 inner join 来求得交集。
SELECT p1.product_id, p1.product_name
 FROM Product p1
INNER JOIN Product2 p2
ON p1.product_id=p2.product_id

对于同一个表的两个查询结果而言, 他们的交INTERSECT实际上可以等价地将两个查询的检索条件用AND谓词连接来实现。

SELECT * 
  FROM Product
 WHERE sale_price > 1.5 * purchase_price 
   AND sale_price < 1500
  • 表的差集–EXCEPT
    同样,MySQL 8.0 还不支持表的减法运算符 EXCEPT,但可以借用NOT IN 谓词实现
SELECT * 
  FROM Product
 WHERE product_id NOT IN (SELECT product_id 
                            FROM Product2)
  • 对称差
    两个集合A,B的对称差是指那些仅属于A或仅属于B的元素构成的集合
-- 使用 NOT IN 实现两个表的差集
SELECT * 
 FROM Produc
【完整Oracle SQL开发教程课件如下】 数据库开发 Oracle数据库 SQL开发教程 第0章 开篇概述(共14页).pdf 数据库开发 Oracle数据库 SQL开发教程 第01章 Oracle数据库基础(共60页).pdf 数据库开发 Oracle数据库 SQL开发教程 第02章 编写简单的查询语句(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第03章 限制数据和对数据排序(共37页).pdf 数据库开发 Oracle数据库 SQL开发教程 第04章 单行函数(共61页).pdf 数据库开发 Oracle数据库 SQL开发教程 第05章 多表连接(共48页).pdf 数据库开发 Oracle数据库 SQL开发教程 第06章 分组函数(共41页).pdf 数据库开发 Oracle数据库 SQL开发教程 第07章 子查询(共49页).pdf 数据库开发 Oracle数据库 SQL开发教程 第08章 集合运算(共20页).pdf 数据库开发 Oracle数据库 SQL开发教程 第09章 高级子查询(共23页).pdf 数据库开发 Oracle数据库 SQL开发教程 第10章 层次查询(共17页).pdf 数据库开发 Oracle数据库 SQL开发教程 第11章 数据操作与事务控制(共52页).pdf 数据库开发 Oracle数据库 SQL开发教程 第12章 Oracle数据库网络连接(共39页).pdf 数据库开发 Oracle数据库 SQL开发教程 第13章 创建和维护表(共37页).pdf 数据库开发 Oracle数据库 SQL开发教程 第14章 约束(共33页).pdf 数据库开发 Oracle数据库 SQL开发教程 第15章 视图(共23页).pdf 数据库开发 Oracle数据库 SQL开发教程 第16章 序列、索引、同义词(共34页).pdf 数据库开发 Oracle数据库 SQL开发教程 第17章 用户、权限和角色(共28页).pdf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值