转发来源: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 [
函数
什么是函数?
函数用于返回特定的数据,可以将应用程序中经常使用SQL语句返回特定数据的操作创建为函数,通过函数可以简化客户端应用程序的开发和维护,提高应用程序的运行性能。
创建函数的语法格式?
create [or replace] function function_name [(形式参数1[,形式参数2..])]
retrun
IS | AS
[本地变量声明]
begin
<执行语句>
[<异常处理>]
end [
存储过程与函数的区别?
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;
触发器的应用?
安全性保护、对数据修改值的审计、提供完整性校验规则、提供数据库表的同步复制、事件日志记录等。