其他数据库对象

上传人:ji****72 文档编号:45685623 上传时间:2018-06-18 格式:PDF 页数:44 大小:1,010.81KB
返回 下载 相关 举报
其他数据库对象_第1页
第1页 / 共44页
其他数据库对象_第2页
第2页 / 共44页
其他数据库对象_第3页
第3页 / 共44页
其他数据库对象_第4页
第4页 / 共44页
其他数据库对象_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《其他数据库对象》由会员分享,可在线阅读,更多相关《其他数据库对象(44页珍藏版)》请在金锄头文库上搜索。

1、3 Sept. 2008 Neusoft Confidential 第十章第十章 其他数据库对象其他数据库对象 东软IT人才实训中心 Copyright 2008 By Neusoft Group. All rights reserved 3 Sept. 2008 Confidential 学时:学时:4 4学时学时 教学方法:讲授教学方法:讲授pptppt 上机练习点评上机练习点评 目标目标: : 本章旨在向学员介绍其他数据库对象本章旨在向学员介绍其他数据库对象 的应用,通过本课的学习,学员应该的应用,通过本课的学习,学员应该 掌握如下知识:掌握如下知识: 1)1)视图视图 2)2)序列序列

2、 3)3)索引索引 4)4)同义词同义词 3 Sept. 2008 Confidential 本章要点本章要点 视图 序列 索引 同义词 3 Sept. 2008 Confidential 视图视图 视图是虚表。是一个命名的查询,用于改变基表数据的显示, 简化查询。视图的访问方式与表的访问方式相同。 视图的好处: 可以限制对基表数据的访问,只允许用户通过视图看到表中 的一部分数据 可以使复杂的查询变的简单 提供了数据的独立性,用户并不知道数据来自于何处 提供了对相同数据的不同显示 3 Sept. 2008 Confidential 简单视图和复杂视图简单视图和复杂视图 简单视图:只涉及到一个表

3、,而且SELECT子句中不包含函数 表达式列(包括单行函数和分组函数)。 复杂视图:涉及到一个或多个表,SELECT子句中包含函数表 达式列(单行函数或负责函数)。 3 Sept. 2008 Confidential 创建视图创建视图 在子查询中可以加入复杂的SELECT. CREATE OR REPLACE VIEW view (alias, alias.) AS subquery WITH CHECK OPTION CONSTRAINT constraint WITH READ ONLY CONSTRAINT constraint; 3 Sept. 2008 Confidential 创建

4、视图示例创建视图示例 例例10-3 查询查询50部门的员工的年薪的视图部门的员工的年薪的视图 CREATE OR REPLACE VIEW salvu50 AS SELECT employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SALARY FROM employees WHERE department_id = 50; DESC salvu50; SELECT * FROM salvu50; 3 Sept. 2008 Confidential 通过视图执行通过视图执行DMLDML操作操作 创建一个测试用表EMP_DML 创建视图v_emp

5、1,是个简单视图。 通过视图进行DML操作。 CREATE TABLE emp_dml AS SELECT employee_id,last_name,salary FROM employees WHERE department_id=50; CREATE OR REPLACE VIEW v_emp1 AS SELECT employee_id,salary FROM emp_dml; UPDATE v_emp1 SET salary=salary+100; 3 Sept. 2008 Confidential 不能通过视图删除记录的条件不能通过视图删除记录的条件 视图中包含分组函数 视图中含有

6、GROUP BY子句 视图中含有DISTINCT关键字 视图中包含伪列ROWNUM 3 Sept. 2008 Confidential 不能通过视图修改记录的条件不能通过视图修改记录的条件 视图中包含分组函数 视图中含有GROUP BY子句 视图中含有DISTINCT关键字 视图中包含伪列ROWNUM 视图中要修改的列包含表达式 3 Sept. 2008 Confidential 不能通过视图添加记录的条件不能通过视图添加记录的条件 视图中包含分组函数 视图中含有GROUP BY子句 视图中含有DISTINCT关键字 视图中包含伪列ROWNUM 视图中要修改的列包含表达式 视图中没有表的NOT

7、 NULL列。 3 Sept. 2008 Confidential WITH CHECK OPTIONWITH CHECK OPTION WITH CHECK OPTION实质是给视图加一个“CHECK”约束, 该CHECK约束的条件就是视图中的子查询的WHERE条件,以 后如果想通过该视图执行DML操作,不允许违反该CHECK约束。 3 Sept. 2008 Confidential WITH CHECK OPTIONWITH CHECK OPTION示例示例 例例10-6 WITH CHECK OPTION例子例子 该约束的条件为视图中WHERE条件,即“employee_id=141”,

8、 如视图v_emp3想执行DML操作,不能把记录的employee_id字 段值改成其他编号(只能是141),如果违反了,执行出错,会 出现错误提示。 CREATE OR REPLACE VIEW v_emp3 AS SELECT employee_id,salary FROM emp_dml WHERE employee_id=141 WITH CHECK OPTION CONSTRAINT v_emp3_ck; 3 Sept. 2008 Confidential WITH READ ONLYWITH READ ONLY WITH READ ONLY的视图是只读的,不允许通过该视图执行 DM

9、L语句。 例例10-7 WITH READ ONLY例子例子,创建一个视图创建一个视图v_emp4 通过该视图进行更新操作 UPDATE v_emp4 SET salary=salary+100; CREATE OR REPLACE VIEW v_emp4 AS SELECT employee_id,salary FROM emp_dml WITH READ ONLY; 3 Sept. 2008 Confidential 删除视图删除视图 删除视图的语法 DROP VIEW view; 3 Sept. 2008 Confidential 内联视图内联视图 内联视图(Inline View),是

10、一个在SQL语句内可以使用的子查 询的别名。是一个命名的SQL语句,但不是真正的数据库的视 图对象。最常见的内联视图的例子就是主查询中的FROM子句 中,包含的是一个命名的子查询。 例例10-8 内联视图的例子内联视图的例子 SELECT last_name,department_name FROM DEPARTMENTS a, (SELECT last_name,department_id FROM EMPLOYEES) b WHERE a.department_id=b.department_id; 3 Sept. 2008 Confidential TopTop- -N N分析分析 To

11、p-N查询主要是实现查找表中最大或最小的N条记录功能。 Top-N分析语法: SELECT 列名, ROWNUM FROM (SELECT 列名 FROM 表名 ORDER BY Top-N操作的列) WHERE ROWNUM 、=或一个 区间运算Between.And等 。 3 Sept. 2008 Confidential 序列序列 序列是一种用于产生唯一数字列值的数据库对象。一般使用序 列自动地生成主码值或唯一键值。序列可以是升序或降序。 序列特点: 可以为表中的记录自动产生唯一序列值。 由用户创建并且可被多个用户共享。 典型应用是生成主键值,用于标识记录的唯一性。 允许同时生成多个序列

12、号,而每一个序列号是唯一的。 可替代应用程序中使用到的序列号。 使用缓存加速序列的访问速度。 3 Sept. 2008 Confidential 创建序列创建序列 创建序列的语法: 创建序列,必须有CREATE SEQUENCE或CREATE ANY SEQUENCE权限。 序列被创建后,可以通过查询数据字典视图 USER_SEQUENCES查看序列信息。 CREATE SEQUENCE schema.序列名 INCREMENT BY n START WITH n MAXVALUE n | NOMAXVALUE MINVALUE n | NOMINVALUE CYCLE | NOCYCLE C

13、ACHE n | NOCACHE; 3 Sept. 2008 Confidential 序列语法说明序列语法说明 当全部缺省时,则该序列为上升序列,由1开始,增量为1, 没有上限,缓存中序列值个数为20。 INCREMENT BY n: n可为正的或负的整数,但不可为0。 默认值为1。 START WITH n:指定生成的第一个序列号,默认为1。对 于升序,默认为序列的最小值。对于降序,默认为序列的最 大值。 MAXVALUE n:指定n为序列可生成的最大值。 NOMAXVALUE:为默认情况。指定升序最大值为1027,指 定降序指定最大值为-1。 3 Sept. 2008 Confident

14、ial 序列语法说明(续)序列语法说明(续) MINVALUE n:指定n为序列的最小值。 NOMINVALUE:为默认情况。指定升序默认最小值为1。指定 降序默认最小值为-1026。 CYCLE:指定序列使用循环。即序列达到了最大值,则返回最 小值重新开始。默认为NOCYCLE。 CACHE n:定义n个序列值保存在缓存中,默认值为20个。 3 Sept. 2008 Confidential 创建序列创建序列 例例10-12 创建序列创建序列test_seq。 CREATE SEQUENCE test_seq START WITH 10 序列从10开始 INCREMENT BY 2 序列每次

15、增加2 MAXVALUE 100 序列最大值100 MINVALUE 9 序列最小值9 CYCLE 序列循环。每次增加2,一直到100后回 到9从新开始 CACHE 10; 缓存中序列值个数为10 3 Sept. 2008 Confidential 伪列伪列 可用语句sequence_name.CURRVAL和 sequence_name.NEXTVAL来访问序列。 CURRVAL当前序列正被分配的序列值。 NEXTVAL在序列中增加新值并返回此值。 CURRVAL和NEXTVAL都返回NUMBER值。 下列语句可使用NEXTVAL和CURRVAL伪列: SELECT语句的非子查询的目标列名列表中。 INSERT语句中的子查询的SELECT目标列名列表中。 INSERT语句的VALUES子句中。 UPDATE语句的SET子句中。 3 Sept. 2008 Confidential 伪列(续)伪列(续) 下列语句不允许使用NEXTVAL和CURR

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号