索引、序列、同义词、数据字典.ppt

上传人:小飞机 文档编号:6427892 上传时间:2023-10-30 格式:PPT 页数:54 大小:383KB
返回 下载 相关 举报
索引、序列、同义词、数据字典.ppt_第1页
第1页 / 共54页
索引、序列、同义词、数据字典.ppt_第2页
第2页 / 共54页
索引、序列、同义词、数据字典.ppt_第3页
第3页 / 共54页
索引、序列、同义词、数据字典.ppt_第4页
第4页 / 共54页
索引、序列、同义词、数据字典.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《索引、序列、同义词、数据字典.ppt》由会员分享,可在线阅读,更多相关《索引、序列、同义词、数据字典.ppt(54页珍藏版)》请在三一办公上搜索。

1、复 习,1、约束的延迟,创建约束时默认使用NOT DEFERRABLE,即约束不可延迟。创建可延迟约束使用DEFERRABLE关键字,并且可以指定INITIALLY IMMEDIATE或INITIALLY DEFERRED说明可延迟约束在初始状态下是立即检查还是延迟检查,默认为立即检查。,CREATE TABLE scott.new_dept(deptno number primary key deferrable initially immediate,dname varchar2(20)unique),2、临时表,Oracle数据库根据临时表的性质不同,可以分为事务临时表与会话临时表。,C

2、REATE GLOBAL TEMPORARY TABLE table_name(col_name date_type,.),注意:一般情况下,如果在创建临时表时没有特殊指明,则该表默认为事务临时表。,ON COMMIT DELETE ROWS,ON COMMIT PRESERVE ROWS,3、创建视图,create or replaceforce|noforce view v_name(alias,)as subquerywith check option constraint constraint_namewith read only,with check option选项:,注:要在此视

3、图上执行insert语句,那么插入的值必须满足子查询中的查询条件。要执行update语句,那只能修改除约束条件中涉及列之外的列。,create view scott.emp_vu10as select*from scott.empwhere deptno=10with check option constraint chk_vu10,可更新的连接视图,连接视图是基于连接的视图。一个连接视图上的DML语句只能修改视图中的一个键值保留表(key-preserved table)。,如果连接视图中的一个基础表的主键在它的视图中仍然存在,并且在连接视图中仍然是主键,则称这个基表为“键值保存表”。,在连

4、接视图上,对视图进行插入、删除、更新等操作时,只能够对视图中的键值保存表的列进行更新。,键值保存表,一般地,由主外键关系的2个表组成的连接视图,外键表(子表)就是键值保存表,而主键表(父表)不是。,删除视图,drop view命令,drop view,索 引,NEW,用户对数据库最频繁的操作是进行数据查询。一般情况下,数据库在进行查询操作时需要对整个表进行数据搜索。当表中数据很多时,搜索数据就需要很长的时间,这就造成了服务器资源的浪费。为了提高检索数据的能力,数据库引入了索引机制。,为什么要引入索引?,索引是一个单独的、物理的数据库结构,它是表中一列或多列值的集合和相应行所对应的rowid。,

5、索引的概念,数据库中引入索引的目的是为了提高对表中数据的查询速度。如果一个表没有创建索引,则对该表进行查询时需要进行全表扫描;如果对表创建了索引,在进行有条件查询时,系统根据查询条件中的索引值信息,利用特定的排序算法在索引表中很快的查询到相应的索引值及其对应rowid,根据rowid可以在数据库表中很快查询到符合条件的记录。,索引的作用及原理,注:并不是只要使用索引就能提高检索速度,例如无条件查询时,不使用索引就比使用索引要快。,通用规则:只用当经常查询索引列中的数据时,才需要在表上创建索引。,Oracle的索引主要包含两类:BTree索引和位图索引。默认情况下大多使用Btree索引,该索引就

6、是通常所见的唯一索引、非唯一性索引、单列索引、复合索引等。,索引的分类,索引的分类BTree索引,创建索引-create index命令,create unique bitmap index index_nameon table_name(col_name1ASC|DESC,),unique:建立唯一索引。,bitmap:建立位图索引。,注:在默认情况下,create index命令创建的是非唯一的B树索引。,例1:在emp1表中,为员工工资和奖金建立索引。,create index scott.sal_comm_indexon scott.emp1(sal,comm),例2:在emp1表中,

7、为员工姓名建立位图索引。,create bitmap index scott.ename_indexon scott.emp1(ename),练 习,在emp1表中,为员工号建立唯一索引。,create unique index scott.empno_indexon scott.emp1(empno),查看索引,select*from user_indexes where table_name=表名;select*from user_ind_columns where table_name=表名;,查看索引,例如:查看EMP1表中所创建有哪些索引?select index_name,inde

8、x_type,table_name from user_indexes where table_name=EMP1 select*from user_ind_columns where table_name=EMP1,删除索引-drop index 命令,drop index index_name,例如:drop index scott.sal_comm_indexdrop index scott.empno_index drop index scott.ename_index,序 列,序列的概念,序列是一个数字生成器,用于生成连续的、唯一的数字。序列也是一种数据库对象。,当需要使用顺序递增的

9、数字时,如果不使用序列,那么需要编写程序生成数字值,使用序列可以简化这种处理操作。例如employee_id列数值顺序递增,并且不允许重复,那么可以使用序列为其提供数据。,创建序列-create sequence命令,create sequence sequence_nameincrement by n start with nminvalue n|nominvaluemaxvalue n|nomaxvalue cycle|nocyclecache n|nocache 见表46,例1:创建序列deptno_seq,开始值为50,增量为10,最大值为99,占用内存块大小为10。,create s

10、equence scott.deptno_seq start with 50increment by 10maxvalue 99cache 10,练习:创建序列emp1_seq,从1自动增加,达到10000后自动从1开始。,create sequence scott.emp1_seqstart with 1increment by 1maxvalue 10000cycle,使用序列,当使用序列时,必须通过属性nextval和currval来引用序列,引用方法:序列名.属性,nextval:用于返回下一个序列值。即:Increment by定义的增加值。currval:用于返回当前序列值。,注意

11、:当第一次引用序列时,必须使用nextval,返回的是初始值。,例:利用序列deptno_seq为dept1表提供部门号。,insert into scott.dept1(deptno,dname,loc)values(,DEVELOPMENT,NEW YORK),当建立序列后,如果要使用序列为顺序递增的主键列提供数据,那么可以使用nextval。,使用序列,例:确定序列deptno_seq的当前序列号。,select from dual,如果要确定当前序列号,那么可以使用属性currval。,使用序列,练习:在表emp1中,使用emp1_seq序列为其插入的记录自动编号。,INSERT IN

12、TO emp1 VALUES(emp1_seq.nextval,LEWIS,CLERK,7902,SYSDATE,1200,NULL,20),1、通过使用cache选项建立序列,可以设置在内存中预分配的序列号个数。该选项设置越大,序列的访问性能会越好,但也会占用更多的内存空间,并且可能出现断号,建议设为nocache或cache 1。,使用序列的注意事项:,2、当执行rollback语句取消事务操作时,会导致出现序列缺口。例如,当使用序列deptno_seq为部门号提供数据时,如果执行rollback取消事务,那么会导致部门号的值不连续(如50,70,80等)。,修改序列alter seque

13、nce命令,alter sequence sequence_nameincrement by n maxvalue nminvalue n cycle|nocyclecache n|nocache,注:序列的初始值不能修改,即不能修改start with。,例:将序列deptno_seq的最大值修改为200,缓存值修改为nocache。,alter sequence scott.deptno_seqmaxvalue 200nocache,修改序列alter sequence命令,删除序列drop sequence命令,drop sequence sequence_name,例如:drop se

14、quence deptno_seq drop sequence emp1_seq,同 义 词,同义词的概念,同义词是为表、视图和序列等对象起的另外一个名字。,建立同义词的好处:,1、引用对象不需要指名对象的所有者。2、引用对象不需要指出它所位于的数据库。3、为对象提供另一个名字。,同义词的分类,公共同义词:是指所有用户都可以直接引用的同义词,并且这种同义词由public用户组所拥有。要以系统管理员身份登陆创建。,私有同义词:是指只能由其方案用户直接引用的同义词。,注:1、如果数据库用户要访问公共同义词,那么可以直接引用,不需要加方案名;2、如果数据库用户要访问其他方案的私有同义词,那么必须要加

15、方案名作为前缀(方案名.同义词名)。,建立公共同义词,create public synonym synomym_namefor schema.object,例:给scott.emp表建立公共同义词public_emp。,create public synonym public_empfor scott.emp,当执行了以上语句后,会建立公共同义词public_emp,该同义词属于public用户组,所以任何用户都可以直接引用该同义词。,例:,Select ename,sal,jobFrom public_empWhere ename=SCOTT,使用公共同义词,建立私有同义词,create

16、synonym synomym_namefor schema.object,例:给scott.dept表建立私有同义词private_dept。,create synonym scott.private_deptfor scott.dept,当执行了以上语句后,会建立私有同义词private_emp,因为该同义词是私有同义词,所以只有当前用户可以直接引用,而其他任何用户引用该同义词都必须加方案名。,例:,Select dname,locFrom scott.private_dept,使用私有同义词,删除同义词drop synonym命令,drop public synonym synonym_

17、name,drop synonym synonym_name,例如:drop public synonym public_emp;drop synonym scott.private_dept;,数 据 字 典,数据字典,数据字典(Data Dictionary,简称DD)是以数据表和视图为主要存在形式的。数据库字典描述了实际数据是如何组织的。对它们可以象处理其他数据库表或视图一样进行查询,但不能进行任何修改。,Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作。,数据字

18、典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。,数据字典的分类,静态数据字典:主要是在用户访问数据字典时不会发生改变。,动态数据字典:是依赖数据库运行的性能,反映数据库运行的一些内在信息。,在Oracle数据库字典中,许多视图都有三个不同的实例,它们的前缀分别为“USER_”、“ALL_”、“DBA_”,“USER_”为前缀的数据库字典视图通常记录执行查询的账户所拥有的对象的信息。,“ALL_”为前缀的数据库字典视图通常记录包括执行查询的帐户所拥有的对象的信息及授权至PUB

19、LIC的帐户用户所拥有的对象的信息。,“DBA_”为前缀的数据库字典视图包含所有数据库对象的信息,而不管其所有者。,其他的字典视图中主要的是V$视图,之所以这样叫是因为他们都是以V$或GV$开头的。,数据字典的分类,注:V$视图是SYS用户所拥有的,在缺省状况下,只有SYS用户和拥有DBA系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到USER_和ALL_视图。,数据字典的分类,数据字典-静态数据字典,user_tables:该数据字典视图用于显示当前用户的所有表信息。,conn scott/tigerbuaa108select table_name from user_tabl

20、es,user_objects:该数据字典视图用于显示当前用户的所有数据库对象。,conn scott/tigerbuaa108select object_name,object_type from user_objects,数据字典-静态数据字典,user_constraints:该数据字典视图用于显示当前用户的所有约束信息。,select constraint_name,constraint_type from user_constraintsWhere table_name=EMP,user_cons_columns:该数据字典视图用于显示当前用户约束所对应的表列。,select con

21、straint_name,column_name from user_cons_columns,数据字典-静态数据字典,user_sequences:该数据字典视图用于显示当前用户所有序列的详细信息。,select sequence_name,min_value,max_value,increment_byfrom user_sequences,user_synonyms:该数据字典视图用于显示当前用户的所有同义词的详细信息,select synonym_name,table_namefrom user_synonyms,用户管理,create user sem identified by b

22、uaa108;,alter user命令,alter user sem identified by sem;,drop user命令,drop user sem;,create user命令,这时还不能以该身份和密码登陆,因为还未授权。,权限管理,grant命令,grant privilege|role,privilege|role,to user|role,user|rolewith grant option,grant create session to sem;,grant select on scott.emp to sem;,权限管理,revoke命令,revoke privilege,privilegefrom user|role,revoke update,delete on scott.emp;,角色管理,create role命令,create role student;,alter role命令,alter role student identified by student;,set role命令,set role student identified by student;,drop role命令,drop role student;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号