数据库

简介: 嵌套查询、集合查询以及基于派生表的查询

1 嵌套查询

(不)相关子查询

1.不相关子查询

特点:由子向父执行(子 -> 父),且父查询和子查询可以轻松分开单独处理

父子查询仅有查询结果直接的关系(父用子的结果),而查询条件之间无依赖,则为不相关子查询

2.相关子查询

特点:

  1. 父查询和子查询使用一些相同的查询条件,所以不易分开处理
  2. 相关子查询不能一次就求解出子查询的结果,必须反复求值 (重点)
  3. 相关子查询事先规定了执行规则,有固定处理顺序

执行规则:

  1. 外层查询条件的表中取出一个元组传送给内层
  2. 执行内层查询,得到一个结果,返送给外层
  3. 执行外层查询,得到一个结果,作为这一次查询结果
  4. 执行步骤1,直到外层查询条件的表的元组全部取完
1.带有IN谓词的子查询

子查询的结果为一个集合时,往往使用IN。

where 属性 IN(子查询)

属性在哪个集合当中

2.带有比较运算符的子查询
where 属性=、>、<、>=、<=、!= (子查询)
找出每个学生超过他自己选修课程平均成绩的课程号
select Sno,Cno
from SC x        //别名
where Grade>=(select avg(Grade)
             from SC y           //别名
             where y.Sno=x.Sno)        //子查询的学生和父查询比较的是同一个人
    (相关子查询)
3.带有ANY(SOME)或ALL谓词的子查询
any:任意

all:全部

使用比较运算符+any / all。

一般可以用聚集函数代替。

= != < <= > >=
any IN <MAX <=MAX >MIN >=MIN
all NOT IN <MIN <=MIN >MAX >=MAX
4.带有exists的子查询
exists:存在

not exists:不存在

带有exists谓词的子查询 不返回任何数据,只产生逻辑真值 “true” 或逻辑假值 “false” 。

若子查询结果非空,则外层的where子句返回“true”,否则返回“false”。

exists子查询不能被其他形式的子查询所替换。

其他三种都能用exists子查询等价替换。

SQL中没有全称量词,只能用存在量词等价替换

全部做某事==不存在一个不做某事的。

2 集合查询

并操作:union 用union合并时,系统会自动去掉重复元组。保留用 union all 操作符

交操作:intersect

差操作:except 可以用 条件1 AND 取反条件2 代替

两个查询块之间用union , intersect , except

3 基于派生表的查询

子查询不仅出现在where子句中,还可以出现在from子句中,

这是子查询生成的临时派生表成为主查询的查询对象。

在派生表后面必须指定一个别名,方便在下面where语句中使用派生表其属性

如果派生表中有聚集函数列,在其别名时需加上(属性列,聚集函数的别名)

目录
相关文章
|
开发框架 关系型数据库 MySQL
数据库是什么
数据库是什么
128 0
|
9月前
|
存储 数据库 数据安全/隐私保护
数据库特点
数据库特点
104 9
|
存储 SQL 安全
一、如何快速掌握数据库
一、如何快速掌握数据库
134 0
|
SQL 存储 XML
|
9月前
|
存储 传感器 监控
数据库的应用
数据库广泛应用于电子商务、物流、酒店管理、医疗、航空、教育、政府和物联网等领域,用于高效存储和管理商品信息、订单数据、医疗记录、航班详情等各类数据,提升效率和服务质量。随着技术进步,其应用场景将持续扩展。
91 1
|
存储 SQL NoSQL
(一)数据库介绍
(一)数据库介绍
186 0
|
关系型数据库 Linux BI
数据库的一些知识
数据库的一些知识
52 0
|
9月前
|
存储 SQL 关系型数据库
我们应该要知道的数据库知识
我们常常谈到数据库可能就会想到Oracle数据库、ACCESS数据库、SQL数据库、MySQL等等,
48 1
|
数据库
数据库视频总结
  最近也在准备成人高考,进度放慢了很多,差不多一个月的时间才把数据库视频看完了。刚看完后觉得模模糊糊的,有好多地方似懂非懂,踌躇不知是否继续往下进行,正好老师上午给我们讲了二八定律使我茅塞顿开。
628 0

热门文章

最新文章