第9章模式对象.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
内嵌视图有一种特殊的应用,称为Top-N-Analysis查询,通过使用伪列ROWNUM,为查询结果集排序,并返回符合条件的记录。 查询工资排序前四名的员工号及其工资。 SELECT ROWNUM ,empno,sal FROM (SELECT * FROM emp ORDER BY sal DESC) WHERE ROWNUM = 4; * 第*页 3. 视图操作 视图创建后,就可以对视图进行操作,包括数据查询、DML操作(数据的插入、删除、修改)等。 因为视图是“虚表”,因此对视图的操作最终转换为对基本表的操作。 对视图的查询象对标准表查询一样,但是对视图执行DML操作时需要注意,如果视图定义包括下列任何一项,则不可直接对视图进行插入、删除和修改等操作,需要通过触发器来实现。 不可更新视图: 集合操作符(UNION,UNION ALL,MINUS,INTERSECT) 聚集函数(SUM,AVG等); GROUP BY,CONNECT BY或START WITH子句; DISTINCT操作符; 由表达式定义的列; 伪列ROWNUM; (部分)连接操作。 4. 修改视图 可以采用CREATE OR REPLACE VIEW 语句修改视图,实质是删除原视图并重建该视图,但是会保留该视图上授予的各种权限。 修改视图CREATE VIEW emp_dept_view,添加员工工资信息 CREATE OR REPLACE VIEW emp_dept_view AS SELECT empno,ename,sal,dname FROM emp,dept WHERE emp.deptno=dept.deptno; 5. 删除视图 可以使用DROP VIEW语句删除视图。 删除视图后,该视图的定义从数据字典中删除,同时该视图上的权限被回收,但是对数据库表没有任何影响。 删除视图emp_dept_view DROP VIEW emp_dept_view; 9.5.2 序列 序列的概念 创建序列 使用序列 修改序列 删除序列 1. 序列的概念 序列用于产生惟一序号的数据库对象,用于为多个数据库用户依次生成不重复的连续整数。 通常使用序列自动生成表中的主键值。 序列产生的数字最大长度可达到38位十进制数。 序列不占用实际的存储空间,在数据字典中只存储序列的定义描述。 2. 创建序列 语法 CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [MAXVALUE n | NOMAXVALUE] [MINVALUE n | NOMINVALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE]; 示例 CREATE SEQUENCE stud_sequence INCREMENT BY 1 START WITH 100 MAXVALUE 1000; 参数说明 INCREMENT BY:设置相邻两个元素之间的差值,即步长,默认值为1; START WITH:设置序列初始值,默认值为1; MAXVALUE:设置序列最大值 NO MAXVALUE:设置默认情况下,递增序列的最大值为1027,递减序列的最大值为-1; MINVALUE:设置序列最小值; NOMINVALUE:设置默认情况下,递增序列的最小值为1, 递减序列的最小值为-1026; CYCLE|NOCYCLE:指定当序列达到其最大值或最小值后,是否循环生成值,NOCYCLE 是默认选项; CACHE|NOCACHE:设置是否在缓存中预先分配一定数量的数据值,以提高获取序列值的速度,默认为缓存20个值。 属性 CURRVAL:返回序列当前值。 NEXTVAL:返回当前序列值增加一个步长后的值。 注意 序列值可以应用于查询的选择列表、INSERT语句的VALUES子句、UPDATE语句的SET子句,但不能应用在WHERE子句或PL/SQL过程性语句中。 3. 使用序列 示例 SQL CREATE TABLE students(sno NUMBER(12),sname VARCHAR2(10) NOT NULL,sex CHAR(2) default m); 表已创建。 INSERT INTO students(sno,sname) VALUES(stud_sequence.nextval,JOAN); SELECT stud_sequence.currval FROM dual; * 第*页 4. 修改序列 说明 除了不能修改序列起始值外,可以对序列其他任何子句和参数进行修改。 如果要修改MAXVALUE参数值,需要保证修改后的最大值大于序列的

文档评论(0)

peain + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档