当前位置:文档之家› 视图、索引的创建及维护

视图、索引的创建及维护


9.1使用和维护视图

WITH CHECK OPTION
透过视图进行增删改操作时,不得破坏视 图定义中的谓词条件(即子查询中的条件表达 式(where子句))
9.1使用和维护视图

组成视图的属性列名

全部省略或全部指定

省略: 由子查询中SELECT目标列中的诸字段组成 明确指定视图的所有列名: (1) 某个目标列是集函数或列表达式 (2) 目标列为 * (3) 多表连接时选出了几个同名列作为视图的字段 (4) 需要在视图中为某个列启用新的更合适的名字
9.1.2 维护视图


(3)重新编译视图: alter view vu_emp_dept compile; (4)删除视图 SQL> drop view vu_emp_dept;
第9章 视图、索引、序列、 同义词的创建及维护

9.1使用和维护视图 9.2使用和维护索引 9.3使用和维护序列 9.4使用和维护同义词 9.5小结
9.1.1 创建视图

(6)建立视图时建立列别名 create view vu_emp_d40 as select empno 雇员编号, ename 雇员姓名, job 雇员工作, sal 雇员工资, deptno 部门编号 from emp where deptno=40 with check option constraint ck_vuempd40;
9.1.1 创建视图

(5)建立带有check约束的视图 例:建立视图vu_emp_d30,显示30部门的雇 员编号、姓名、工作、工资和部门号,不允许 添加其它部门信息。 create view vu_emp_d30 as select empno,ename,job,sal,deptno from emp where deptno=30 with check option constraint ck_vuempd30;
ቤተ መጻሕፍቲ ባይዱ
9.1.1 创建视图


练习1:建立视图显示雇员的编号、姓名及其 主管的编号和姓名。 练习2:建立视图显示雇员的编号、姓名、工 作、部门名称和工资等级。
9.1.1 创建视图

(4)建立只读视图 例:建立只读视图vu_emp_d20,包含列 empno,ename,job,sal,deptno。 create view vu_emp_d20 as select empno,ename,job,sal,deptno from emp where deptno=20 with read only;
9.2使用和维护索引


索引的优点为:提高查询的执行速度、实施数 据的唯一性、加速了表之间的连接 索引的缺点为:创建索引需要花费较多的时间、 每个创建的索引连同原先的数据源都需要空间 来存储数据、每次修改数据时索引都要更新
9.2使用和维护索引



按照索引数据的存储方式可以分为: B树索引 位图索引 反向键索引 基于函数的索引 按照索引个数分为: 单列索引 复合索引 索引列值唯一性可分为: 唯一索引 非唯一索引(默认)
9.1.1 创建视图

练习:建立视图显示工资高于部门平均工资的 雇员姓名、工资和部门号
9.1.1 创建视图

(3)建立连接视图 例:建立视图vu_emp_dept,包含emp表的 empno,ename,sal列和dept的dname列。 create view vu_emp_dept as select e.empno,e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno;


9.1.1 创建视图
练习: 建立视图vu_emp01,可以查看雇员的编号、姓 名、工资和奖金。并使用测试数据作增、删、改 操作(数据自拟)。

9.1.1 创建视图

(2)建立复杂视图 例:建立视图vu_gdept,按部门统计平均工资、合计 工资、最高工资和最低工资。 create view vu_gdept as select deptno, round(avg(sal),2) avgsal, round(sum(sal),2) sumsal, round(max(sal),2) maxsal, round(min(sal),2) minsal from emp group by deptno;
9.2.1 创建索引

1、 B树索引(默认) 以B树结构(算法)来组织并存放索引数据 B树是一颗二叉树 默认以升序排列 由根块、分支块、叶块(ROWID)组成 其中,索引数据存储在叶块
9.2.1 创建索引


B树索引语法 Create [unique] index index_name On table_name(column_name,column_name…) [tablespace tablespace_name]; 其中: unique:此关键字表示创建唯一性索引,即索引的 值不允许重复。 Tablespace_name:位于的表空间的名称,如果没有 指定表空间,就是当前用户默认的表空间。
9.1.1 创建视图

查看视图文本: SQL> select text from user_views where view_name=upper('vu_emp');
对简单视图的增、删、改操作: SQL>insert into vu_emp (empno,ename,sal) values (1000,‘张三',1500); SQL> update vu_emp set sal=3000 where empno=1000; SQL> delete from vu_emp where empno=1000; 说明:视图本身没有任何数据,视图上的增、删、改、查 操作都是针对视图基表来完成的。
9.1.1 创建视图

测试:
SQL> insert into vu_emp_d30 (empno,ename,job,sal,deptno)
values (1004,'李四1','CLERK',1500,20);



ORA-01402: 视图 WITH CHECK OPTION where 子句 违规 练习:建立可以添加工作为‘CLERK’的雇员的视图, 包含列编号、姓名、工作,不允许添加其他工种的雇 员信息。
9.1.2 维护视图


(1)查看视图定义 SQL>desc user_views; SQL>select text from user_views where view_name=upper(‘vu_emp_dept’); (2)修改视图定义 例:修改视图vu_emp_dept,增加列deptno。 create or replace view vu_emp_dept as select e.empno,e.ename,e.sal,e.deptno,d.dname from emp e,dept d where e.deptno=d.deptno;
9.2使用和维护索引


在创建索引时,Oracle首先对将要建立索引的 字段进行排序,然后将排序后的字段值和对应 记录的ROWID存储在索引段中。建立索引可 以使用CREATE INDEX语句,通常由表的所有 者来建立索引。如果要以其它用户身份建立索 引,则要求用户必须具有CREATE ANY INDEX 系统权限或者相应表的INDEX对象权限。具体 语法格式如下: create index 索引名称 on 表名(列名);
9.2.1 创建索引


创建规则及特点: 应建立在重复值很少的列上 应建立经常在where子句中引用的某列或某几列上 适用于相等查询和范围查询 例:我们经常会执行语句: select * from emp where ename=‘SCOTT’ 那么我们可以在ename列上创建B树索引,语句如 下: create index ind_ename on emp(ename) tablespace users
第9章 视图、索引、序列、 同义词的创建及维护

9.1使用和维护视图 9.2使用和维护序列 9.3使用和维护索引 9.4使用和维护同义词 9.5小结
9.1使用和维护视图



视图(View)是从一个或多个表(其他视图)中导出 的表,其结构和数据是建立在对表的查询基础之上的。 所以视图不是真实存在的基础表,而是一张虚表。视 图所对应的数据并不实际地以视图结构存储在数据库 中,而是存储在视图所引用的表中。 视图一经定义便存储在数据库中,与其相对应的数据 并没有像表一样在数据库中另外存储一份,通过视图 看到的数据只是存放在基表中的数据。对视图的操作 与对表的操作一样,可以对其进行查询、修改(有一 定的限制)和删除。 当对视图中的数据进行修改时,相应的基表的数据也 要发生变化,同时,如果基表的数据发生变化,则这 种变化也可以自动地反映到视图中。

9.1使用和维护视图

使用system帐号授予scott账户create view的权 限。 SQL> grant create view to scott;

9.1.1 创建视图

(1)建立简单视图 例:建立视图vu_emp,包含emp表的 empno,ename,sal列 create view vu_emp as select empno,ename,sal from emp; 查看视图列: SQL> desc vu_emp 使用数据字典user_views查看用户视图: SQL> select view_name from user_views;
相关主题