『数据库』朴实无华的数据库多表查询,连接查询、笛卡尔积

『数据库』 朴实无华且枯燥的数据库教程–入门必看!(不收藏,真的吃亏了)

一、交

(会用到连接运算,固定写法,连接运算在下面不用着急看)
先假设两张表:
Table NSA1:

NameSexAge
张三18
李四跨性别者21
王五18
韩七12

Table NSA2:

NameSexAge
张三18
李四21
王五18
赵六18
韩七12
SELECT a.Name,a.Sex FROM NSA1 a 
INNER JOIN 
NSA2 b ON a.Name=b.Name AND a.Sex =b.Sex 

等价于

SELECT a.Name,a.Sex FROM NSA1 a 
INNER JOIN 
NSA2  b USING(Name ,Sex )
NameSexAge
张三18
王五18

二、并

先假设两张表:
Table NSA1:

NameSexAge
张三18
李四21
王五18
韩七12

Table NSA2:

NameSexAge
张三18
李四21
王五18
赵六18
韩七12
SELECT Name,Sex FROM NSA1 
UNION ALL
SELECT Name,Sex FROM NSA1 
NameSexAge
张三18
李四21
王五18
韩七12
张三18
李四21
王五18
赵六18
韩七12

如果执行:

SELECT Name,Sex FROM NSA1 
UNION 
SELECT Name,Sex FROM NSA1 
NameSexAge
张三18
李四21
王五18
韩七12
赵六18

注释:union自带去重

三、差

(会用到连接运算,固定写法,连接运算在下面不用着急看)
先假设两张表:
Table NSA1:

NameSexAge
张三18
李四21
王五18
赵六18
韩七12

Table NSA2:

NameSexAge
张三18
李四21
王五18
韩七12
SELECT a.Name, a.Sex FROM  NSA1 a 
LEFT JOIN NSA2 b 
ON a.Name= b.Name
AND a.Sex= b.Sex
WHERE b.Name IS NULL 
NameSexAge
赵六18

四、笛卡尔积

其实所有的链接运算都是都是建立在笛卡尔积上的,笛卡尔积就是不舍弃任何全外连接,可以这么理解,但是cross join 象征着返回所有的情况,默认不使用 where进行过滤的。
举例:
Table Name :

Name
朱小明
刘小华

Table Subject:

Subject
语文
数学
法律
select * from Name  cross join Subject order by Name;
NameSubject
刘小华数学
刘小华法律
刘小华语文
朱小明法律
朱小明语文
朱小明数学

五、连接查询

在这里插入图片描述
连接运算是关系的二目运算.关系R与关系S的连接运算是从两个关系的广义笛卡尔积中选取属性间满足一定条件(称为连接条件,记为AθB)的元组形成一个新关系。
在这里插入图片描述
①等值连接

等值连接是从关系R与S的广义笛卡尔积中选取A、B属性相等的那些元组,按照属性相同的行将两(或以上)张表元组匹配连接;
举个例子
ID_Name表

IDName
1大好人
2大坏蛋
3猪八戒
4孙悟空
5沙和尚
7唐三藏
8武松

ID_MingZhu 表

IDMingZhu
3西游记
4西游记
5西游记
7西游记
8水浒传
SELECT * FROM ID_Name N,ID_MingZhu M WHERE N.ID=M.ID;
ID_Name.IDNameID_MingZhu.IDMingZhu
3猪八戒3西游记
4孙悟空4西游记
5沙和尚5西游记
7唐三藏7西游记
8武松8水浒传

② 自然连接

自然连接是特殊的等值连接,要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。

举个例子:
ID_Name表

IDName
1大好人
2大坏蛋
3猪八戒
4孙悟空
5沙和尚
7唐三藏
8武松

ID_MingZhu 表

IDMingZhu
3西游记
4西游记
5西游记
7西游记
8水浒传
SELECT * FROM ID_Name N natural join ID_MingZhu M ON N.ID=M.ID;
ID_Name.IDNameMingZhu
3猪八戒西游记
4孙悟空西游记
5沙和尚西游记
7唐三藏西游记
8武松水浒传

③ 左外连接
将返回右表的所有行。如果左表的某行在右表中没有匹配行,则将为右表返回空值左连接:
例子:
ID_Name表

IDName
1大好人
2大坏蛋
3猪八戒
4孙悟空
5沙和尚
7唐三藏
8武松

ID_MingZhu 表

IDMingZhu
3西游记
4西游记
5西游记
7西游记
8水浒传
9红楼梦
SELECT * FROM ID_Name N left join ID_MingZhu M ON N.ID=M.ID;
ID_Name.IDNameID_MingZhu.IDMingZhuNu
1大好人NULLNULL
2大坏蛋NULLNULL
3猪八戒3西游记
4孙悟空4西游记
5沙和尚5西游记
7唐三藏7西游记
8武松8水浒传

④ 右外连接
将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值;
例子

ID_Name表

IDName
1大好人
2大坏蛋
3猪八戒
4孙悟空
5沙和尚
7唐三藏
8武松

ID_MingZhu 表

IDMingZhu
3西游记
4西游记
5西游记
7西游记
8水浒传
9红楼梦
SELECT * FROM ID_Name N right join ID_MingZhu M ON N.ID=M.ID;
ID_Name.IDNameID_MingZhu.IDMingZhuNu
3猪八戒3西游记
4孙悟空4西游记
5沙和尚5西游记
7唐三藏7西游记
8武松8水浒传
NULLNULL9红楼梦
  • 全外连接。
    左表和右表都不做限制,所有的记录都显示,两表不足的地方用null 填充

例子
ID_Name表

IDName
1大好人
2大坏蛋
3猪八戒
4孙悟空
5沙和尚
7唐三藏
8武松

ID_MingZhu 表

IDMingZhu
3西游记
4西游记
5西游记
7西游记
8水浒传
9红楼梦
SELECT * FROM ID_Name N full join ID_MingZhu M ON N.ID=M.ID;
ID_Name.IDNameID_MingZhu.IDMingZhuNu
1大好人NULLNULL
2大坏蛋NULLNULL
3猪八戒3西游记
4孙悟空4西游记
5沙和尚5西游记
7唐三藏7西游记
8武松8水浒传
NULLNULL9红楼梦

写在最后:
Name:风骨散人,目前是一名双非在校大学生,预计考研,热爱编程,热爱技术,喜欢分享,知识无界,希望我的分享可以帮到你!名字的含义:我想有一天我能有能力随心所欲不逾矩,不总是向生活低头,有能力让家人拥有富足的生活而不是为了生计而到处奔波。“世人慌慌张张,不过是图碎银几两。偏偏这碎银几两,能解世间惆怅,可让父母安康,可护幼子成长 …”
文章主要内容:
Python,C++,C语言,JAVA,C#等语言的教程
ACM题解、模板、算法等,主要是数据结构,数学和图论
设计模式,数据库,计算机网络,操作系统,计算机组成原理
Python爬虫、深度学习、机器学习
计算机系408考研的所有专业课内容
目前还在更新中,先关注不迷路。微信公众号,cnblogs(博客园),CSDN同名“风骨散人”

如果有什么想看的,可以私信我,如果在能力范围内,我会发布相应的博文!
感谢大家的阅读!😘你的点赞、收藏、关注是对我最大的鼓励!

评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值