oracle SQL整理全套(3)

来源:互联网 发布:gta5捏脸数据女爱丽丝 编辑:程序博客网 时间:2024/05/20 01:13

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 0
原创粉丝点击