Oracle数据库常见对象-索引、视图、存储过程、函数和触发器

转发来源:https://blog.csdn.net/someonemh/article/details/80773582

以下总结常见的数据库对象,供自己复习

如有错误希望指出,共同学习!

一、索引
什么是索引?

  索引是一种用于提高查询效率的数据库对象,使用索引可以快速定位数据,减少磁盘IO操作次数。索引是由数据库自动维护,删除或破坏索引不会对数据表造成影响,只会影响查询速度。

索引的创建语法?

create [unique| bitmap]  INDEX index_name ON table_name(column1[,column2…]);

索引的分类?

唯一性索引、非唯一性索引 :按照索引字段是否允许出现重复划分

单字段索引、联合索引     :按照索引基于字段的数目划分

普通索引、函数索引       :按照索引基于的字段是普通字段还是复合表达式划分

B树索引、位图索引        :按照索引的数据结构划分

索引创建的原则?

1)、主键、外键创建索引

2)、数据量大于300行的数据表建议创建索引

3)、若经常多表联合查询,则连接字段应该创建索引

4)、经常出现在where字句中的字段建议使用索引

5)、索引应该创建在小字段上,对于大的文本字段甚至超长字段,不要创建索引

6)、频繁进行数据操作的表,不建议创建太多的索引

二、视图
什么是视图?

视图是一种虚表,在已有的数据表或其他视图的基础上创建的,可以理解为存储起来的查询语句,视图本身不存储数据,因此对虚表的操作最终都会转换为对基表的操作。

视图有什么优点缺点?

优点:

1)、可以存储复杂的查询语句,简化查询

2)、安全性角度,从视图中查询到的数据只是基表数据中的一部分,这样可以屏蔽数据表结构,

      限制对数据的访问。

3)、逻辑数据独立性,视图的存在可以使得应用程序和数据表一定程度上相互独立,应用程序可

     以建立在视图之上,没有视图的话,应用程序必定是建立在数据表上的。

4)、数据库中实际上保存的视图编译后的查询指令,使用视图查询可以避免编译过程,提高运

     行效率

缺点:

1)、对视图的操作最终都会转换为对基表的操作,因此如果是对复杂的视图的修改操作可能会失

     败。

创建视图的语法格式?

create [or replace] VIEW view_name as subQuery;

三、存储过程、函数
存储过程

什么是存储过程?

  存储过程用于执行特定的操作,将经常需要执行的特定操作创建为存储过程,可以简化客户端应用程序的开发和维护,由于这些操作创建为存储过程之后,在数据库服务器端存储的是其编译后的指令,因此调用存储过程是不需要重新编译,可以提高运行效率。

存储过程的创建语法?

create [or replace] procedure procedure_name

[(形式参数1[,形式参数2..])]

IS | AS

[本地变量声明]

begin

<执行语句>

[<异常处理代码>]

end [<procedure_name>];

函数

什么是函数?

  函数用于返回特定的数据,可以将应用程序中经常使用SQL语句返回特定数据的操作创建为函数,通过函数可以简化客户端应用程序的开发和维护,提高应用程序的运行性能。

创建函数的语法格式?

create [or replace] function function_name [(形式参数1[,形式参数2..])]

retrun <dataType>

IS | AS

[本地变量声明]

begin

<执行语句>

[<异常处理>]

end [<function_name>];

存储过程与函数的区别?

1)、函数只能使用IN模式参数接收外界传入的数据,而存储过程可以用IN、OUT、IN OUT 三种

2)、函数必须有且只有一个返回值,用于将计算结果返回给调用环境;存储过程不允许有返回

     值,但可以使用OUT、或IN OUT模式参数返回多个值给调用环境

3)、函数的返回值必须是Oracle数据库支持的类型,不允许使用PL/SQL特有的数据类型

4)、函数不允许向存储过程一样被独立调用,函数只能作为表达式的一部分来使用

四、触发器
什么是触发器?

   触发器是指被隐含执行的存储过程,可以使用PLSQL、java或C语言进行开发。当发生特定的事件(比如修改表、创建对象、登录到数据库等操作)时,系统会自动执行触发器中的代码,类似于高级编程语言中的事件监听器,主要用于数据的维护。

   触发器由:触发事件、触发条件、触发操作三部分组成。

触发器的分类?

DML触发器、系统事件触发器、用户事件触发器

语句级触发器、行级触发器、INSTEAD OF触发器

创建触发器的语法格式?

create [or replace] trigger trigger_name

before insert or update or delete on table_name

declare

[声明变量]

begin

<触发操作>

end;

触发器的应用?

安全性保护、对数据修改值的审计、提供完整性校验规则、提供数据库表的同步复制、事件日志记录等。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值