Oracle 视图、存储过程、函数、序列、索引、同义词、触发器
一、视图
从表中抽出的逻辑上相关的数据集合,视图是一种虚表,视图是建立在已有表的基础之上,视图赖以建立的这些表称为基表。向视图提供数据的是 SELECT 语句,可以将视图理解为存储起来的 SELECT 语句。视图中的数据会随着基表的变化而变化。
那为什么要使用视图呢?
1)、控制数据访问
2)、简化查询
3)、避免重复访问相同的数据
【1】创建视图语句:CREATE VIEW 举个栗子看下:
【2】删除视图:DROP VIEW;
【3】TOP_N分析:分析查询一个列中最大或最小的 n 个值:其实就是现实列的个数,相当于 Mysql 中的 limit
二、存储过程
存储过程是存储在数据库中提供所有用户程序调用的子程序。它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升
【栗子】认真看看也就懂了
三、函数
函数与存储过程的结构类似,但是函数必须有一个return子句,用于返回函数值。
【栗子】好好研究下吧,精华都在下面:
【总结】:函数与存储过程的区别:执行方式略有不同,存储过程的执行方式有两种(①:使用execute②:使用begin和end),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(select f1() form dual;)。还有就是如果只有一个返回值,用存储函数,否则,一般用存储过程。
四、序列
提供有规律的数值,可供多个用户用来产生唯一数值的数据库对象。主要用于提供主键值。将序列装入内存可以提高访问效率。
【1】查询数据字典视图 USER_SEQUENCES 获取序列定义信息。
【2】NEXTVALUE:返回序列中下一个有效的值,任何用户都可以引用。CURRVAL:存放序列的当前值。
【3】修改序列:修改序列的增量、最大值、最小值、循环选项、是否装入内存。
【4】删除序列:DROP SEQUENCES 语句删除。
五、索引
提高查询效率,一种独立与表的模式对象,可以存储在于表不同的磁盘或表空间,索引损坏只影响查询速度。
【1】自动创建索引:在定义 PRIMARY KEY 或 UNIQUE 约束后系统自动在响应的列上创建唯一性索引。
【2】手动创建索引:可以在其他列上添加非唯一索引,以加速查询。
【3】当出现如下情况时,适合创建索引:①、列中数据值分布范围很广。②、列经常出现在 WHERE 子句或连接条件中。③、表经常被访问而且数据量很大,访问的数据大概占数据总量的2%到4%。
【4】查询索引:USER_INDEXS,删除索引:DROP INDEX index;
六、同义词
给对象起别名,缩短名字方便访问。
七、触发器
触发器是在事件发生时隐式地自动运行的PL/SQL程序块,不能接收参数,不能被调用。