数据库关系操作集合

news2025/1/17 23:25:10

文章目录

    • 传统集合运算
      • 1:联合(UNION)
      • 2:差集(EXCEPT 或 MINUS 或 LEFT JOIN&&IS NULL)
      • 3:交集(INTERSECT或INNER JOIN)
      • 4:笛卡尔积(JOIN)
    • 专门集合运算
      • 1:选择(SELECT)
      • 2:投影(PROJECTION)
      • 3:连接(JOIN)
      • 4:除(DIVISION)

传统集合运算


传统集合运算包括 联合(UNION),差集(EXCEPT 或 MINUS 或 LEFT JOIN&&IS NULL),交集(INTERSECT或INNER JOIN),笛卡尔积(JOIN)

需要注意的是,不同数据库语法可能会有些不同,不过大体概念即是该段所讲内容。

1:联合(UNION)

联合作用:删除重复的行。

它会分别对比两个表的所有相同列的内容是否一致,但是,你不应该使用一个表的 n 列数据与另一个 n+1 列的数据进行使用 UNION,否则将出现错误。

例,表一people1数据为下:

请添加图片描述

例,表二people2数据为下:

请添加图片描述

使用联合 UNION:

select * from people1 
union 
select * from people2;

在这里插入图片描述

2:差集(EXCEPT 或 MINUS 或 LEFT JOIN&&IS NULL)

差集作用:查找在一个集合中存在而在另一个集合中不存在的元素。

  1. 对比列的数量必须相同,不可以使用一个集合的 n 列与另一个集合的 n+1 列进行比较。(通过上小段的内容,你可能会有点疑惑,其实,当不使用 select * 时,会出现 select name from people1 与 select name,source from people2 进行对比情况)
  2. 对应列的数据类型需要兼容。一个集合的列为 int 类型不要与另一个集合为 varchar 的列进行集合运算。

MySQL 不支持 EXCEPT 或 MINUS,可以使用LEFT JOIN&&IS NULL来实现,这不是必须的,其他可以实现相同逻辑的方法也是可以的。

PostgreSQL 和 Oracle 支持 EXCEPT 或 MINUS。

例:表一people1数据为下:

请添加图片描述

例,表二people2数据为下:

请添加图片描述

使用差集(MySQL数据库):

select * from people1 
left join 
people2 
on people1.name = people2.name 
where people2.name is null;

join 需要和 on 一起使用。

使用差集(PostgreSQL 和 Oracle数据库):

select * from people1 
MINUS
select * from people2 

在这里插入图片描述

可以看到,”亚索“ 这一行数据在另一个集合中是不存在的。

3:交集(INTERSECT或INNER JOIN)

交集作用:返回两个集合都相等的行。

MySQL 并不支持 INTERSECT,可以用 INNER JOIN 来实现交集的功能。

PostgreSQL 和 Oracle 支持 INTERSECT。

例:表一people1数据为下:

例:表一people1数据为下:

请添加图片描述

例,表二people2数据为下:

请添加图片描述

使用交集(MySQL数据库):

select * from people1 
inner join 
people2 
on people1.name = people2.name;

在这里插入图片描述

可以发现,“锐雯” 那一行数据在两个集合内都存在。

4:笛卡尔积(JOIN)

笛卡尔积通常有连接条件:

  1. INNER JOIN(内连接):返回两个集合中都匹配的行。
  2. LEFT JOIN(左连接):返回左表所有的行,以及右表匹配的行,否则,右表将返回NULL。
  3. RIGHT JOIN(右连接):返回右表所有的行,以及左表匹配的行,否则,左表将返回NULL。
  4. FULL JOIN(全连接):返回左表和右表的所有行,当某一侧行在另一侧的行没有匹配的,将返回NULL。

专门集合运算


专门集合运算包括 选择(SELECT),投影(PROJECTION),连接(JOIN),除(DIVISION)

1:选择(SELECT)

选择作用:选择出符合某种条件的行,通常用 WHERE 来实现

select * from people1 
where name = "亚索";

在这里插入图片描述

2:投影(PROJECTION)

投影作用:选择集合中特定的列

select name,source 
from people1 
where name = "亚索";

在这里插入图片描述

3:连接(JOIN)

连接作用:将两个表结合起来,通常和 INNER JOIN、LEFT JOIN、RIGHT JOIN 或 FULL JOIN 一起使用。

4:除(DIVISION)

想要很好使用这个,我们需要想象一个应用场景。

比如:

  1. 我们想要查找购买了所有商品的的人
  2. 我们想要查找获得所有奖项的班级
  3. 我们想要查找参加过所有活动的员工

例,表三people3数据为下:

在这里插入图片描述

例,表四allproject数据为下:

在这里插入图片描述

使用除,查找参加过所有项目的人:

select name from people3 
group by name 
having count(distinct project) = (select count(*) from allproject);

在这里插入图片描述

除(DIVISION)基本思想:使用 GROUP BY 进行分组,然后使用 HAVING 判断每个组的数量是否等于全集的数量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/606906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM那些事 (含经典面试题)

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 前言: 1. JVM:Java 虚拟机&#x…

【MySQL高级篇笔记-性能分析工具的使用 (中) 】

此笔记为尚硅谷MySQL高级篇部分内容 目录 一、数据库服务器的优化步骤 二、查看系统性能参数 三、统计SQL的查询成本:last_query_cost 四、定位执行慢的 SQL:慢查询日志 1、开启慢查询日志参数 2、查看慢查询数目 3、慢查询日志分析工具&#xf…

k8s 配置service失败

服务暴露的端口不可用 查看容器的状态是否为Running。 进入容器&#xff0c;然后对容器进行curl。 curl 127.0.0.0:<需要查询的端口>如果是refuse或者其他返回&#xff0c;说明服务完全不可用。 注册service 能够进行外网访问的必须是NodePort类型。NodeIP是无法进…

Java 实现在顺序表指定位置插入一个元素

一、思路 1.定义一个pos变量来记录要插入的位置. 2.定义一个usedSize变量来记录元素个数. 3.定义一个data变量来记录要插入的元素值. 4.要保证pos位置合法&#xff0c;也就是不是负数&#xff0c;因为是要保证pos位置前是要有元素&#xff0c;因此也不能大于元素个数. 5.也需要…

【电子学会】2023年03月图形化二级 -- 电子画板

电子画板 1. 准备工作 (1)删除默认的小猫角色,保留默认白色背景; (2)从角色库添加Arrow1角色作为画笔; (3)绘制五个角色:颜色分别为红、黄、绿、蓝、紫的圆形; (4)将Arrow1角色的第一个造型修改为下图所示状态,箭头尖端在角色中心位置。 2. 功能实现 (1)点…

他山之石可以攻玉:解锁9个chatGPT常用姿势

ChatGPT是一个颠覆性的人工智能&#xff0c;可以用来实现众多目标。下面是我们用中文提出的关于这些任务的指令&#xff0c;以及来自ChatGPT的中文回答示例。 调试代码 提示&#xff1a;为什么我的python代码报错&#xff1a;x [2, 3, 8 9]&#xff1f; ChatGPT回答&#x…

chatgpt赋能python:Python反转输出的利用

Python反转输出的利用 在Python编程中&#xff0c;有时候需要对一些字符串或列表进行反转输出。这种操作非常实用&#xff0c;可以用于字符串或列表翻转、倒序等场景&#xff0c;可以帮助我们提高代码的效率。在本文中&#xff0c;我们将介绍Python反转输出的方法以及实用性。…

2023/06/03 软件PM入门学习(二)

视频参考地址&#xff1a; B站闫波软件项目管理视频学习. 视频资源&#xff1a;video P3 本篇重点&#xff1a;过程、CMMI 简书日更计划同步记录&#x1f3c3;… 杂 项目管理五要素 技术、方法、团队建设、信息、沟通 战略角度 人员&#xff08;people&#xff09;问题 &am…

用Python的turtle和matplotlib画出圆满和爱心

马上就要到六一儿童节了&#xff0c;小朋友很喜欢画画&#xff0c;这里就用Pyhton来画一些简单形状。 首先是圆形&#xff0c;圆形的寓意是圆满、完美、团圆、优胜和团结。圆形在形状上是一个平面中点到定点距离相等的图形&#xff0c;象征着圆满和完美&#xff0c;寓意着无所不…

chatgpt赋能python:用什么软件编写Python文件?

用什么软件编写Python文件&#xff1f; Python 是一种流行的编程语言&#xff0c;许多人使用它来编写软件应用程序、数据分析工具以及自动化脚本。但是对于初学者来说&#xff0c;可能会感到迷茫&#xff0c;不知道应该用什么软件来编写并运行Python文件。本文将介绍几种非常流…

实战Windows Chrome 0day

遇到挑战跟挫折的时侯&#xff0c;我有一个坚定的信念&#xff0c;我可以断气&#xff0c;但绝不能放弃 漏洞复现 实战Windows Chrome 0day需要满足的条件 第一点是关闭沙箱环境 第一种方式 设置Chrome浏览器的快捷方式 在快捷方式上增加 -no-sandbox 第二种方式 命令行命令…

Vue-CLI + Vue3 + Vue-Router4 实现tabbar小案例

Vue-CLI Vue3 Vue-Router4 实现tabbar小案例 tabbar导航栏案例&#xff1a;该案例实现了基础的组件封装&#xff0c;编程式路由&#xff0c;以及插槽的使用&#xff0c;对于我们日常组件化开发有着很大的启示作用&#xff0c;主要效果是点击下方的导航栏链接&#xff0c;上方…

【owt】addon.MediaStream,erizo::MediaStream 还有addon.MediaXXX,erizo::MediaXXX

9. MediaStream 和erizo::MediaStream 类的继承关系 erizo::MediaStream source/agent/webrtc/rtcConn/erizo/src/erizo/MediaStream.h source/agent/webrtc/rtcConn/erizo/src/erizo/MediaDefinitions.h erizo::MediaSource source/agent/webrtc/rtcConn/erizo/src/erizo/…

皮卡丘RCE

1.RCE漏洞描述 RCE漏洞&#xff0c;可以让攻击者直接向后台服务器远程注入操作系统命令或者代码&#xff0c;从而控制后台系统。 远程系统命令执行 一般出现这种漏洞&#xff0c;是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。比如我们常见的路由器、防火墙…

XSS笔记(简单了解的)

1.什么是XSS&#xff1f; XSS (Cross Site Scripting)&#xff0c;即跨站脚本攻击&#xff0c;是一种常见于 Web 应用中的计算机安全漏洞。恶意攻击者往 Web 页面里嵌入恶意的客户端脚本&#xff0c;当用户浏览此网页时&#xff0c;脚本就会在用户的浏览器上执行&#xff0c;进…

chatgpt赋能python:Python可以有多个同名函数吗?

Python 可以有多个同名函数吗&#xff1f; Python作为一门高级编程语言&#xff0c;其灵活性和易用性备受开发人员的青睐。在Python中&#xff0c;函数是编程语言的核心&#xff0c;任何有经验的Python工程师都会知道Python的函数允许使用相同的名称来进行定义。那么问题来了&…

一文搞懂编程界中最基础最常见【必知必会】的十一个算法,再也别说你只是听说过【建议收藏+关注】

文章目录 常见算法分类算法复杂度算法描述与实现交换类排序冒泡排序快速排序 插⼊类排序直接插入排序Shell排序 选择类排序简单选择排序&#xff08;⼜称直接选择排序&#xff09;堆排序 归并排序二路归并排序多路排序 线性时间非比较类排序计数排序基数排序桶排序 常见算法分类…

1. 爬虫及爬虫的步骤

1. 爬虫及爬虫的步骤 文章目录 1. 爬虫及爬虫的步骤1. 爬虫是什么&#xff1f;2. 爬虫的作用3. 爬虫步骤3.1 获取网页3.2 解析网页3.3 存储数据 4. 总结 1. 爬虫是什么&#xff1f; 爬虫就是写一段代码让计算机模仿人类自动访问网站。 2. 爬虫的作用 爬虫可以代替人们自动地…

Golang每日一练(leetDay0085) 2的幂、数字 1 的个数

目录 231. 2的幂 Power of Two &#x1f31f; 233. 数字 1 的个数 Number of Digit One &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java…