Oracle子查询就是嵌套查询,把select查询的结果作为另一个select、update或delete语句的条件
它的本质就是where条件查询中的一个表达式。
1. 单行子查询:向外部返回的结果为空或者返回一行。是利用where条件“=”关联查询结果的。
如果单行子查询返回多行会报错。
例如,查询stuinfo和class中班级为“信息科学2班”的所有学生信息。
(1)利用内关联进行查询
select *
from stuinfo a, class b
where a.classno = b.classno and b.classname = '信息科学2班';

(2)利用单行子查询
select * from stuinfo
where stuinfo.classno = (select class.classno from class where class.classname = '信息科学2班');
2.多行子查询:子查询返回多行结果,需要利用关键字 IN、ALL、ANY或者运算符<、>、=等来接收子查询的多行结果。
例如,查询班级表class中所有班级的所有学生信息。
select *
from stuinfo a
where a.classno in (select b.classno from class b);

关键字ANY:满足任意条件即可
关键字ALL:必须满足所有条件
例如,查询年龄大于25或26的学生信息,使用关键字ANY
select *
from stuinfo a
where a.age > any(25,26);

例如,查询年龄大于25,26的学生信息,使用关键字ALL
这个例子在这里有点牵强,毕竟想同时大于25,26只需大于26即可,不过为了了解ALL的用法,还是这么写吧
select *
from stuinfo a
where a.age > all(25,26);

2. 同义词(synonym):当前用户给另一个用户的对象创建一个别名,通过别名进行查询。
我觉得考试的应该不会考察这个,不过为了保证完整性还是简单的记下笔记~
共有同义词:dba创建的,所有用户都可以访问。
私有同义词:当前用户创建的,只有当前用户可以访问。
同义词的创建语法为:
create [or replace] [public] synosym 当前用户.同义词名 for 对象的所有用户.对象名;
//[]里的内容表示可用可不用

本文介绍了Oracle数据库中的子查询概念,包括单行子查询和多行子查询的使用,以及如何利用IN、ALL、ANY等关键字处理多行结果。此外,还简单探讨了同义词(Synonym)的应用,包括共用同义词和私有同义词的区别,并给出了创建同义词的基本语法。
73

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



