Oracle高级语法二

  1. Oracle异常处理

     EXCEPTION
     WHEN exception_name THEN      语句体1
     WHEN exception_name THEN      语句体2
     ......
    
  2. 自定义函数(function) 只能在数据库内部使用

     函数定义 语法:CREATE [OR REPLACE] FUNCTION 函数名
        [参数一 [IN|OUT|IN OUT] 参数类型
          参数二[IN|OUT|IN OUT] 参数类型 ]
        RETURN 返回值   --只能返回一个值
     {IS | AS } <类型.变量的说明>
     BEGIN
           函数体
     EXCEPTION
           其他语句
     END;
    
    
     删除函数: DROP FUNCTION 函数名;
    

3.存储过程 可以在数据库外部使用

    CREATE [OR REPLACE]PROCEDURE 存储过程名
       [参数一 [IN|OUT|IN OUT] 参数类型
         参数二[IN|OUT|IN OUT] 参数类型 ]
       RETURN 返回值   --只能返回一个值
    {IS | AS } <类型.变量的说明>
    BEGIN
          过程体
    EXCEPTION
          其他语句
    END;

    删除存储过程:DROP PROCEDURE 过程名
  1. 存储过程调用的三种不同方式:

     EXEC[UTE]  过程名(参数1,参数2);
     EXECUTE   过程名;
     过程名; --只需要输入一个过程名字即可
    
  2. 包 package 与包体 package body

     a. 包:Oracle中,可以将有联系的对象打成包,包中可以定义存储过程,函数,游标,自定义类型和变量等
     a. 包体:承载包中功能的具体实现
    
  3. Oracle中序列的使用:Sequence

     a. 其维护一个整数值,每次取值会自动增量(+1),其保证每次取值是唯一。
     a. 该整数的最大值:28个9
     a. 缓存(cache):默认不使用,当使用时,会提前取值N个,效率高。如缓存后未使用,则取出的值,不可再用。
     a. 序列Sequence的消费与使用
             i. select 序列名.nextval from dual;  --取值增量
             i. select 序列名.currval from dual;  --仅取当前值(如未取值,首次执行将失败)
    

  1. oracle事务:是数据库的一个程序执行单元(指令集),要么完全执行,要不完全不执行,支持事务的数据库,应具有ACID特性,否则将不能保证数据处理的正确性。

         1. 事物的ACID特性:
             a. 原子性(Atomicity) 业务不可分割,要么全执行,要么全不执行
             a. 一致性(Consistency) 增加与减少相对应,这边增加多少,那边相应减少多少
             a. 隔离性(lsolation)  其他访问看不到事务未提交的数据。(防止脏读,保证数据的正确性)
             a. 持久性(Durability) 事务提交后,数据将被持久化存储
    
  2. Oracle事物的生命周期:

         a. 连接开始时,默认事务开启,事务将在commit/rollback命令快结束完毕后结束
    
  3. Oracle中的锁

         a. DML语句具有数据独占性,其所涉及到的表或数据行被其锁定独占,其他用户一般只能进行读取操作,不能进行其他操作。
         a. DML操作结束后,锁被自动释放,其他用户方可进行数据操作
    
  4. 事务与锁的关系:

         a. 锁在事务结束前,将会一直存在。
         a. 应尽可能减少锁的占用时间。
    
  5. 锁的类型分为:

       a. 行级锁
       a. 表级锁
       a. 排他锁,独占锁,X锁(禁止会话读取,修改)
       a. 共享锁,S锁(share locks)  允许其他会话读取,但禁止修改
       a. 一旦死锁发生,一般需要dba去手动解锁(杀死引发锁的SQL语句)
    
  6. oracle索引

       a. 一个表只能有一个唯一索引
       a. 语法: CREATE [UNIQUE] INDEX indexname ON table(字段1 [ASC|DESC][,字段2 [ASC|DESC]]);
       a. 删除索引 drop INDEX indexname;
    
  7. 索引的优劣:

       a. 好处:索引会提升数据的select查询速度
       a. 劣处:索引会降低数据的insert,update,delete处理速度,因为当执行这些操作时,不仅要维护数据,还的维护索引表,增加了工作量
    
  8. Oracle创建索引的两种方式

       a. 自动创建:在定义 PRIMARY KEY或UNIQUE约束后系统自动在相应的列上创建唯一性索引
       a. 手动创建:用户可以在其他列上创建非唯一性索引,以优化数据查询
    
  9. 唯一索引(聚集索引)与非聚集索引核心区别:

               a. 聚集索引:数据的物理存储顺序。(最快)
               a. 非聚集索引:仅是另外维护了一个索引数据(表)
    
  10. 索引后,会引发全表扫描:

             a. 通配符在模糊搜索词首查询时,不能应用索引。  
             a. 在索引列上使用not,不能应用索引。
             a. 索引上使用空值比较时,不能使用索引。
    
posted @ 2021-05-17 21:18  NIHUAN  阅读(284)  评论(0)    收藏  举报