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  阅读(311)  评论(0)    收藏  举报