数据库关系操作集合

这篇具有很好参考价值的文章主要介绍了数据库关系操作集合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

传统集合运算


传统集合运算包括 联合(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 判断每个组的数量是否等于全集的数量。文章来源地址https://www.toymoban.com/news/detail-470469.html

到了这里,关于数据库关系操作集合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包