Oracle 7~ 子查询、同义词

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

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 对象的所有用户.对象名;
//[]里的内容表示可用可不用

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值