oracle SQL整理全套(3)

本文详细介绍了Oracle SQL中的子查询使用,包括单行与多行比较,以及Exists操作的示例。同时,讲解了DML语句的简单应用,并探讨了事务控制的重要性,特别是银行转账问题作为典型例子。还提到了隐式和显式的Commit和Rollback情况。最后,文章简要提及了Oracle锁的概念,强调其在并发事务处理中的关键作用。
摘要由CSDN通过智能技术生成

1、子查询

语法:SELECT select_list FROM table WHERE expr operator     (SELECT select_list   FROM  table);

注意点:  单行比较必须对应单行子查询(返回单一结果值的查询); 比如=  , >  多行比较必须对应多行子查询(返回一个数据集合的查询);比如 IN  , > ANY, > ALL 等 

使用Exists操作:

SELECT employee_id, last_name, job_id, department_id FROM   employees outer WHERE  EXISTS ( SELECT 'X'   FROM   employees  WHERE  manager_id =  outer.employee_id);

SELECT employee_id,last_name,job_id,department_id    FROM   employees     WHERE  employee_id IN (SELECT manager_id    FROM   employees    WHERE  manager_id IS NOT NULL); 

有兴趣的可以仔细分析这2个SQL,判断执行性能是否一样?除此还有 使用 Not  Exists操作和NOT  IN

2、DML语句(简单)

3、事务控制

典型例子:银行转账问题,三个流程操作必须同时完成,否则回滚

隐式的事务提交或回滚动作:  
Commit, rollback  是显式的提交和回滚语句,还有一些隐式的提交和回滚是大家需要知道并引起注意的:   
当如下事件发生是,会隐式的执行Commit动作: (1)、数据定义语句被执行的时候,比如新建一张表:Create Table … (2)、数据控制语句被执行的时候,比如赋权 GRANT …( 或者 DENY) (3)、正常退出  iSQL*Plus  或者PLSQL  DEVELOPER, 而没有显式的执行 COMMIT    或者 ROLLBACK 语句 。   
当如下事件发生时,会隐式执行Rollback 动作:  
(1)、非正常退出  iSQL*Plus , PLSQL  DEVELOPER,  或者发生系统错误。

4、锁

Oracle中的锁的主要作用就是:防止 并发事务对相同的资源(所谓资源是指 表、行、共享的数据结构、 数据字典行等)进行更改的时候,相互破坏。

锁有既有隐式的,也有显式的; 但某用户对某一批数据进行更改,而未提交之前,Oracle会隐式的进行加锁;  

当然用户也可以显式的加锁,比如: Select  … from TableA  Where … For UPDATE   NoWait。

Oracle 的锁是一门学问,涉及到较多知识,只能在在今后的工作中不断积累。


至于后面的视图、触发器、索引、集合、一些进阶查询就不做说明了

















评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值