-
表的加减法
表、视图和查询的执行结果都是记录的集合, 其中的元素为表或者查询结果中的每一行。
在标准 SQL 中, 分别对检索结果使用
UNION
,INTERSECT,
EXCEPT
来将检索结果进行并,交和差运算, 像**UNION
,INTERSECT
**, **EXCEPT
**这种用来进行集合运算的运算符称为集合运算符。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xnpEpSE4-1640243090299)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/4356ea0e-245b-4a51-a80e-eeb82c896b32/Untitled.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xZI2mx36-1640243090301)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/8a33a134-cb68-46d2-925c-92cc90681af5/Untitled.png)]
-
表的加法
-
UNION
UNION 会对两个查询的结果集进行合并和去重, 这种去重不仅会去掉两个结果集相互重复的, 还会去掉一个结果集中的重复行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jWacdlRv-1640243090302)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ea984434-f10b-4604-86ea-b88fc023ff59/Untitled.png)]
--例子: --分别使用 UNION 或者 OR 谓词,找出毛利率不足 30%或毛利率未知的商品. -- 参考答案: SELECT * FROM product WHERE sale_price / purchase_price < 1.3 UNION SELECT * FROM product WHERE sale_price / purchase_price IS NULL;
-
包含重复行的UNION ALL
需要不去重的并集, 在 UNION 的结果中保留重复行的语法其实非常简单,只需要在 UNION 后面添加 ALL 关键字就可以了.
-- 商店决定对product表中利润低于50%和售价低于1000的商品提价 SELECT * FROM product WHERE sale_price < 1000 UNION ALL SELECT * FROM product WHERE sale_price < 1.5 * purchase_price
-
-
对称差
-- 使用 NOT IN 实现两个表的差集 SELECT * FROM product WHERE product_id NOT IN (SELECT product_id FROM product2) UNION SELECT * FROM product2 WHERE product_id NOT IN (SELECT product_id FROM product)
-
-
连结(JOIN)
连结(JOIN)就是使用某种关联条件(一般是使用相等判断谓词"="), 将其他表中的列添加过来, 进行“添加列”的集合运算。
-
内连接(INNER JOIN)
要点一: 进行连结时需要在 FROM 子句中使用多张表.
要点二:必须使用 ON 子句来指定连结条件.
要点三: SELECT 子句中的列最好按照 表名.列名 的格式来使用.
--例子: SELECT SP.shop_id ,SP.shop_name ,SP
-
阿里云AI训练营SQL入门与实践Task4
![](https://img-home.csdnimg.cn/images/20240711042549.png)