利用sql语言表达复杂查询

这篇博客详细介绍了SQL中的子查询,包括θsome与θall子查询,如=some与in的关系,<>all和not in的比较。同时,讲解了如何将特定学生某课程成绩替换为班级平均分。还探讨了exists子查询的多个实例,以及关系代数操作,如集合并交差、空值处理、内连接和外连接。此外,文章还讨论了视图的概念、定义、使用、更新规则及其撤销,强调了视图在数据库系统中的重要应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

子查询

θsome与 θall子查询

=some和in的关系同

表达式 = some(子查询)
表达式 in (子查询)

select 
Sname 
from 
Student S 
where 
S#
in(select S# from SC where S# = S.S# and C#='001');
select
Sname 
from 
Student S 
where 
S# =some (select S# from SC where S# = S.S# and C#='001');

<>all和not in的关系同

select 
Sname 
from 
Student S 
where 
S# not in(select S# from SC where S# = S.S# and C#='001');
select 
Sname 
from 
Student S
where 
S# <>all (select S# from SC where S# = S.S# and C#='001');

将张三同学001号课的成绩置为其班级该门课的平均成绩

update 
SC 
set 
score = 
(select AVG(SC2.Score)
from 
SC SC1,Student S1,SC SC2,Student S2 
where S1.class = S2.class 
and 
SC1.S# = S1.S# 
and
SC2.S# = S2.S# 
and
and S1.Sname ='张三'
and
SC1.S# = '001'
and 
SC1.C# = SC2.C#
)

AB CD四个表 AC关联 BD关联 
然后拿AB表去做题目里的限制 
拿CD表去取AB已经做完限制后剩下的正确的某列的值

exists子查询

[not] exists(子查询)//子查询中有无元组存在

例1

在这里插入图片描述

例2

在这里插入图片描述

例3

在这里插入图片描述

例4

在这里插入图片描述

例5

在这里插入图片描述

关系代数操作

集合并交差操作

子查询{Union[all]|intersect[all}|except[all] 子查询}
通常情况下自动删除重复元组:不带all
Union all                   m+n次
intersect all               min(m,n)次
except all                  max(0,m-n)

空值处理

is null
is not null

内连接、外连接

在这里插入图片描述

笛卡尔积:单纯的排列组合 自然连接:自然连接是一种特殊的等值连接,它会把重复列消除。

自然连接一定是等值连接,等值连接不一定是自然连接。

tip:等值连接要求相等的分量,不一定是公共属性;而自然连接要求相等的分量必须是公共属性。

在这里插入图片描述

视图及其应用

三级模式两层映像结构

在这里插入图片描述

(1)视图概念和结构(存的是导出视图的公式)

在这里插入图片描述

(2)视图定义

在这里插入图片描述

(3)视图使用

(4)视图更新

①含有聚合函数不可更新
②缺少主键列的不可更新
③还有下图的
在这里插入图片描述

(5)视图撤销

drop view view_name

总结在这里插入图片描述

图片来源:战德臣教授《数据库系统》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值