Datawhale SQL TASK4
2022/5/27 2:21:51
本文主要是介绍Datawhale SQL TASK4,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第4章 集合运算
目录摘要:感觉不是很难,但是知识点比较零碎,自己做了两张表格,可能有不大准确的地方,欢迎指正
- 第4章 集合运算
- 4.1 表的加减法
- 4.2 连结 JOIN
- 练习题
- 4.1
- 4.2
- 4.3
- 4.4
- 4.5
4.1 表的加减法
-
表的加法-UNION,两个SELECT FROM 语句中间使用UNION
- 同一张表,可以使用UNION或者OR,不同的表只能使用UNION
- 如果想要保留重复行,采用UNION ALL语句
-
SELECT * FROM product AS p1 WHERE product_id NOT IN (SELECT product_id FROM product2) -- 这儿用SELECT 语句不能用p1.product_id,这--- 儿不能写p2否者报错 UNION SELECT * FROM product2 AS p2 WHERE product_id NOT IN (SELECT product_id FROM product)
-
如果用UNION,两个SELECT语句各有各的WHERE,而不是两个SELECT对应一个WHERE.
-
UNION可以隐式数据类型转换,hive中join关联时,应该避免隐式数据类型转换,否则容易数据倾斜
-
日期时间类型可以和数值、字符串、NULL兼容
-
MySQL 8.0 不支持交运算INTERSECT,用 inner join 来求得交集,或者AND
-
SELECT p1.product_id, p1.product_name FROM Product p1 INNER JOIN Product2 p2 ON p1.product_id=p2.product_id
-
-
MySQL 8.0 不支持交运算EXCEPT ,用 NOT IN
-
对称差=并集-交集
表格 | 加法 | 减法 | ||
---|---|---|---|---|
集合 | 并 | 交 | 差 | 对称差 |
关键字 | UNION | INTERSECT | EXCEPT | |
MySQL 8.0是否支持 | 支持 | 不支持 | 不支持 | 否 |
替代方案 | 单表用OR,多表只能UNION | INNER JOIN ON | WHERE NOT IN | NOT IN UNION NOT IN |
方案简记 | 两个SELECT FROM 语句中间使用UNION | 内连结 | NOT IN | A-B UNION B-A |
用法 | SELECT FROM UNION SELECT FROM | 两个SELECT FROM 语句中使用INNER JOIN,最后放ON | ||
注意事项 | 合并后删除重复记录,不想删除用UNION ALL | 也可以用对称差,并集-对称差 |
4.2 连结 JOIN
-
能够简化关联子查询,关联子查询在数据量较多的时候时间消耗很大
-
内连结,INNER JOIN
-
FROM tab_1 INNER JOIN tab_2 ON conditions
-
表先连结后筛选,
-
-
自然连结,NATURAL JOIN ,不需要使用ON,就是一个定义表示一张表的连结
-
外连接,LETF/RIGHT/FULL OUTER JOIN,那个连结就会保留哪个的不匹配的数据
-
全连接
- 含义:对左表和右表的所有数据予以保留,能用ON关联的,就搞在一起一行显示,不能用ON 关联的就分别显示,多余的行用缺失值进行填充
- MySQL 8.0不支持全连接,
这篇关于Datawhale SQL TASK4的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南