MySQL:Task04-集合运算

一、表的加减法

集合运算

集合在数学领域表示“各种各样的事物的总和”, 在数据库领域表示记录的集合. 具体来说,表、视图和查询的执行结果都是记录的集合, 其中的元素为表或者查询结果中的每一行。

在标准 SQL 中, 像UNION,INTERSECTEXCEPT这种用来进行集合运算的运算符称为集合运算符。

在数据库中, 所有的表--以及查询结果--都可以视为集合, 因此也可以把表视为集合进行上述集合运算, 在很多时候, 这种抽象非常有助于对复杂查询问题给出一个可行的思路。

1.表的加法

UNION

SELECT product_id, product_name
  FROM product
 UNION
SELECT product_id, product_name
  FROM product2;

UNION 等集合运算符通常都会除去重复的记录

上述查询是对不同的两张表进行求并集运算. 对于同一张表, 实际上也是可以进行求并集的。

包含重复行的集合运算 UNION ALL

-- 保留重复行
SELECT product_id, product_name
  FROM Product
 UNION ALL
SELECT product_id, product_name
  FROM Product2;

隐式数据类型转换

通常来说, 我们会把类型完全一致, 并且代表相同属性的列使用 UNION 合并到一起显示, 但有时候, 即使数据类型不完全相同, 也会通过隐式类型转换来将两个类型不同的列放在一列里显示。

需要注意的是 hive中进行join关联时,关联列要避免使用隐式数据类型转换,否则容易导致数据倾斜。

练习题:

使用 SYSDATE()函数可以返回当前日期时间, 是一个日期时间类型的数据, 试测试该数据类型和数值,字符串等类型的兼容性。

例如, 以下代码可以正确执行, 说明时间日期类型和字符串,数值以及缺失值均能兼容。

SELECT SYSDATE(), SYSDATE(), SYSDATE()
 
 UNION
 
SELECT 'chars', 123,  null

上述代码的查询结果:

2.表的减法

求集合差集的减法运算和实数的减法运算有些不同, 当使用一个集合A减去另一个集合B的时候,对于只存在于集合B而不存在于集合A的元素, 采取直接忽略的策略,因此集合A和B做减法只是将集合A中也同时属于集合B的元素减掉。

MySQL 8.0 不支持减法运算EXCEPT(也不支持交运算INTERSECT),我们可以使用NOT IN实现表的减法。

练习题:

找出只存在于Product表但不存在于Product2表的商品。

-- 使用 NOT IN 子句的实现方法
SELECT * 
  FROM Product
 WHERE product_id NO
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Could not find artifact mysql:mysql-connector-java"是一个常见的Maven构建工具的错误信息,它表示Maven无法找到指定的依赖项。根据提供的引用内容,出现这个错误的原因可能是以下两种情况之一。 首先是错误1中提到的无法搬运问题。这通常表示Maven尝试从指定的Maven仓库(在这里是https://maven.aliyun.com/repository/public)下载依赖项时失败了。可能的原因包括网络连接问题、仓库不可用或没有权限访问该仓库。解决这个问题的方法可能是检查网络连接,或者尝试使用其他可用的仓库。 其次是错误2中提到的找不到依赖项的问题。这通常表示Maven在指定的Maven仓库中找不到所需的依赖项。可能的原因包括依赖项版本号错误、仓库中没有该依赖项或者仓库配置错误。解决这个问题的方法可能是检查依赖项的版本号是否正确、确认仓库中是否存在该依赖项或者尝试使用其他可用的仓库。 综上所述,出现"Could not find artifact mysql:mysql-connector-java"错误时,可能是由于Maven无法下载或找不到指定的依赖项所致。解决此问题的方法可能包括检查网络连接、确认仓库配置是否正确、检查依赖项的版本号是否正确或尝试使用其他可用的仓库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [maven加载依赖时遇到的问题](https://blog.csdn.net/qq_49172635/article/details/127765017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【已解决】Could not find artifact mysql:mysql-connector](https://blog.csdn.net/m0_37149062/article/details/129788103)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值