八、连接查询
前面的查询都只是涉及一个表,如果我们要查询的数据在多个表上进行,我们就要涉及到连接查询。
a)等值连接
比如我门要查询读者的所有信息即包括借阅信息和其本身信息
select 读者.*,借阅.*
from 读者,借阅
where 读者.借书证号=借阅.借书证号;
b) 非等值连接(即所谓的连接符不为'=')
c) 自身连接(即自身与自身连接)
例如我们有一张表,表上有选修的学科以及先选修课,现在我们要知道间接先选修课,那么我们就要将其尽心自身连接
select first.cno,second.cpno
from course first,course second //相当于将一个表命名为first 和 second 两个不同的名字
where first.cpno=second.cno;
d) 外连接
例如查询所有借阅信息,包括罚款信息
select *
from 借阅 left outer join 罚款分类 on (借阅.罚款分类号=罚款分类.罚款分类号);
有时候我们希望消去重复属性
select *
from 借阅 left outer join 罚款分类 using (罚款分类号);
e) 复合条件连接 即有多重限制
例如:我们要查询即借阅过a书也借阅过b书的人
九、嵌入查询
a) 普通的嵌入查询即一个父查询包含一个子查询
b)带有IN 谓词的子查询
例如:查询与王菲同性别的读者
select *
from 读者
where 读者.性别 in
(
select 性别
from 读者
where 姓名='王菲'
);
c) 带有比较运算符的子查询
d)带有any 或者 all 的子查询
(< | > | >= | <= | =)any ( 大于 | 小于 | 大于等于 | 小于等于 | 等于)其中的任意值
(< | > | >= | <= | =)all (大于 | 小于 | 大于等于 | 小于等于 | 等于)其中的所有值
e)带有exists 的子查询
带有exists的子查询不返回任何数据,只是产生逻辑判断'true' 或者 'false';
数据库连接查询与嵌入查询详解
本文深入探讨了数据库连接查询的多种类型,包括等连接、非等连接、自身连接、外连接以及复合条件连接,并详细介绍了嵌入查询的概念及其在实际应用中的常见形式,如普通嵌入查询、使用IN谓词的子查询、带有比较运算符的子查询、any或all运算符的子查询以及带有exists的子查询。通过具体的SQL示例,展示了如何运用这些查询技术解决复杂的数据检索问题。

被折叠的 条评论
为什么被折叠?



