子查询和集合查询的定义使用

子查询
1.1.1
1),带有any(some) 或all谓词的子查询。

any 大于子查询结果的某个值
all 大于子查询结果中的所有值
=any 大于等于子查询结果中的某个值
=all 大于等于子查询结果中的所有值
=any 等于子查询结果中的某个值
=all 等于子查询结果中的所有值

2),带有exists谓词的子查询
语法含义:带有exists谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。
a,
使用存在量词exists后,若内层查询结果非空,则外层的where子句返回真值(类似于可以查到值,然后显示出来),否则返回假值(类似于查不到值)。
b,
与exists相对应的是not exists谓词。使用存在量词not exists后,若内层查询结果为空,则外层的where子句返回真,否则返回假值。

3) , 基于派生表的查询
子查询不仅可以出现在where子句中,还可以出现在from子句中,这时子查询生成的派生表成为主查询对象。
通过from子句生成派生表时,as关键字可以省略,但必须为派生表指定一个别名。
select*from a,(select age,avg(grade) from b) as r(age,age(grade));

1.1.2
集合查询
集合操作主要包括并操作union,交操作intersect和差操作except.
a,union
使用union将多个查询结果合并起来时,系统会自动去掉重复元组。如果要保留重复元组则用union all 操作符。

b,intersect (交集操作)
同时满足多个条件的查询结果 (类似于and)
【例3.67】查询计算机科学系的学生与年龄不大于19岁的学生的交集。
selectfrom student where sdept=‘cs’ intersect selectfrom student where age<=19;
也就是查询计算机科学系中年龄小于等于19岁的学生。
select*from student where sdept=‘cs’ and age<=19;

c,except 求差
【例3.68】查询计算机科学系的学生与年龄不大于19岁的学生的差集。
selectfrom student where sdept=‘cs’ except selectfrom student where age<=19;
也就是查询计算机科学系中年龄大于19岁的学生。
select*from student where sdept=‘cs’ and age>19;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值