ORACLE04数据库对象

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ORACLE第四讲数据库对象(视图、序列、同义词、索引)本章目标♦熟练掌握视图的创建和使用♦熟练掌握序列的创建和使用♦熟练掌握同义词的创建和使用♦熟练掌握索引的创建和使用视图什么是视图视图以经过定制的方式显示包含在一个或多个表(或其它视图)中的数据。视图获取查询的输出结果,并将其作为表来处理,因此,可以将视图视为“已存储的查询”或“虚拟表”。尽管视图看起来像真实的表,但他们是定制的子集或表,仅包含选定的行和列。视图可被看作是一个进入数据库表中的“窗口”,透过它只能看见选定的行和列。视图为什么要使用视图——视图的优点通过限制对表中预定的一组行和列的访问。视图提供了另外一种级别的表安全性。可根据不同用户定义不同视图,达到安全性的目的。视图隐藏了数据的复杂性。例如,一个视图可能是用一个连接来定义的,它是多个表的相关列或相关行的集合。视图隐藏了这样一个事实,即此信息实际上来自于多个表。即简化了SQL语句。视图视图简化了用户的命令,因为视图允许用户从多个表中选择信息,而用户不必实际知道如何执行连接。视图将应用程序与基表定义的修改隔离开来。例如一个视图引用了4列表中的3个列。现在,如果要向该表添加第5个列,则视图的定义不会受影响,而且使用该视图的所有应用程序也不受影响。视图通过重命名,从另一个角度(相对于基表),提供了数据,而不影响基表。视图如何使用视图创建视图的语法CREATE[ORREPLACE][FORCE|NOFORCE]VIEWview_name[(alias[,alias]…)]ASselect_statement--------SQL查询语句[WITHCHECKOPTION[CONSTRAINTconstraint]][WITHREADONLY];视图其中:ORREPLACE:表示在视图存在的情况下替换该视图。FORCE:如果使用此关键字,则无论基表是否存在,都将创建视图。但是编译会报错NOFORCE:这是默认值。如果使用此关键字,则仅当基表存在时才创建视图。view_name:表示要创建的视图的名称。alias:指定由视图的查询所选择的表达式或列的别名。别名的数目必须与视图所选择的表达式的数目相匹配。select_statement:表示SELECT语句。WITHCHECKOPTION:此选项指定只能插入或更新视图可以访问的行。术语constraint表示为CHECKOPTION约束指定的名称。WITHREADONLY:此选项确保不能在此视图上执行任何修改操作。即只读视图。视图创建视图举例:createviewemp_1300asselect*frommyempwheresal1300;createorreplaceviewemp_1300asselect*frommyempwheresal1500;createvieweviewasselecta.*,dname,locfromempa,deptbwherea.deptno=b.deptno;createviewemp_1300asselect*frommyempwheresal1300withreadonly;----创建只读视图视图更新视图更新视图必须满足的条件在视图中使用DML语句只能修改一个底层的基表。只能修改键值保存表。(如果基表的主键在视图中也为主键,则称这个表为键值保存表。)如果对记录的修改违反了基表的约束条件,则无法更新视图。如果创建的视图包含连接运算符、DISTINCT运算符、集合运算符、聚合函数和GROUPBY子句,则将无法更新视图。如果创建的视图包含伪列或表达式,则将无法更新视图。不能有WITHREADONLY修饰。视图删除视图语法:DROPVIEWviewname;序列什么是序列序列是为生成唯一数字列值创建的数据库对象。什么时候用序列序列通常用来自动生成主键或唯一键的值。序列可以按升序排列,也可以按降序排列。序列创建序列语法:CREATESEQUENCEsequence_name[STARTWITHinteger][INCREMENTBYinteger][MAXVALUEinteger|NOMAXVALUE][MINVALUEinteger|NOMINVALUE][CACHEinteger][CYCLE|NOCYCLE];序列其中:STARTWITH:指定要生成的第一个序号。对升序序列,其默认值为序列的最小值。对于降序序列,其默认值为序列的最大值。INCREMENTBY:用于指定序列号之间的间隔。其默认值为1。如果n为正值,则生成的序列将按升序排列,如果n为负值,则生成的序列将按降序排列。MAXVALUE:指定序列可以生成的最大值。NOMAXVALUE:如果指定了NOMAXVALUE,Oracle将升序序列的最大值设为1027,将降序序列的最大值设为-1。这是默认选项。序列MINVALUE:指定序列的最小值。MINVALUE必须小于或等于STARTWITH的值,并且小于MAXVALUE。NOMINVALUE:如果指定了NOMINVALUE,Oracle将升序序列的最小值设为1,将降序序列的最大值设为-1026。这是默认选项。CYCLE:指定序列在达到最大值或最小值后,将继续从头开始生成值。NOCYCLE:指定序列在达到最大值或最小值后,将不能再继续生成值。这是默认选项。序列创建序列举例:createsequenceseqstartwith1incrementby2maxvalue50cache10cycle;序列访问序列创建了序列之后,可以通过CURRVAL和NEXTVAL伪列来访问该序列的值。NEXTVAL:创建序列后第一次使用NEXTVAL时,将返回该序列的初始值。以后在引用NEXTVAL时,将使用INCRMENTBY子句的值来增加序列值,并返回这个新值。CURRVAL:返回序列的当前值,即最后一次引用NEXTVAL时返回的值。序列举例:–insertintostudentvalues(squ.nextval,'fangcheng','male');–用selectsqu.currvalfromdual;查看序列的当前值。更改序列ALTERSEQUENCE命令用于修改序列的定义。如果执行下列操作,则会修改序列:设置或删除MINVALUE或MAXVALUE。修改增量值。序列语法:ALTERSEQUENCEsequence_name[INCREMENTBYinteger][MAXVALUEinteger|NOMAXVALUE][MINVALUEinteger|NOMINVALUE][CYCLE|NOCYCLE];注意:不能修改序列的STARTWITH参数。在修改序列时,应注意升序序列的最小值应小于最大值。举例:altersequencesquincrementby3maxvalue60cycle;序列删除序列语法:DROPSEQUENCEsequencename;同义词什么是同义词同义词是数据库对象的一个别名,这些对象可以是表、视图、序列、过程、函数、程序包,甚至其他同义词。通过使用同义词,用户可以访问其它模式的数据库对象而无需指定模式前缀。例如,USER1要访问USER2的表emp,必须使用USER2.emp来引用,如果为USER1创建一个名为emp的同义词代表USER2.emp,那么USER1就可以用该同义词象访问自己的表一样引用USER2.emp了。同义词为什么使用同义词——同义词用途简化SQL语句。隐藏对象的名称和所有者,安全性。提供对对象的公共访问。同义词允许应用程序访问数据库对象,不论哪个用户或哪个数据库拥有该对象。但是同义词不能代替权限,在使用同义词之前要确保用户已经得到访问对象的权限。可以通过同义词执行SELECT、INSERT、UPDATE、DELETE、GRANT和REVOKE等语句。同义词只是表的一个别名,因此对它的所有操作都会影响到表。同义词同义词类型私有同义词私有同义词只能被当前模式的用户访问。私有同义词名称不可与当前模式的对象名称相同。要在自身模式创建私有同义词,用户必须拥有CREATESYNONYM系统权限。公有同义词公有同义词可被所有的数据库用户访问。公有同义词可以隐藏基表的身份,并降低SQL语言的复杂性。要创建公有同义词,用户必须拥有CREATEPUBLICSYNONYM系统权限。公有同义词名称可以与当前模式对象名称相同,但是当公有对象和本地对象具有相同名称时,本地对象优先。同义词创建私有同义词语法:CREATE[ORREPLACE]SYNONYM[schema.]synonym_nameFOR[schema.]object_name;举例:createsynonymsforstudent;创建公有同义词语法:CREATE[ORREPLACE]PUBLICSYNONYM[schema.]synonym_nameFOR[schema.]object_name;举例:首先在SYSTEM模式下向用户授予CREATEPUBLICSYNONYM系统权限。grantcreatepublicsynonymtousername;然后在某用户模式下创建公有同义词。createpublicsynonymsforstudent;同义词删除同义词语法:DROPSYNONYMsynonymname;索引什么是索引索引是一种结构,它基于一列过多列的值来提供快速访问表的数据。为什么使用索引可以明确的创建索引,以加快对表执行DQL语句的速度,就象书的索引可以帮我们更快的查找信息一样。索引索引的优缺点优点:提高查询速度缺点:降低增删改的性能,创建索引需要维护所以降低性能创建索引的原则如果一张表很大,记录数很多,则创建索引不要对一张表创建多个索引,因为会影响DML操作为频繁使用的列创建索引索引使用索引系统会自动为主键加上索引创建索引以后不需要再管,由数据库自己去维护创建普通索引语法:CREATEINDEXindex_nameONtable_name(column_list);举例:createindexionemp(ename);索引创建位图索引原则:如果取值范围很小而且是固定的,可以创建位图索引语法:CREATEBITMAPINDEXindex_nameONtable_name(column_list);举例:createbitmapindexIonemp(deptno);索引删除索引语法:DROPINDEXindexname;数据字典通过数据字典查询存在的数据库对象查询视图信息:selectview_namefromuser_views;查询序列信息:selectsequence_namefromuser_sequences;查询同义词信息:selectsynonym_namefromuser_synonyms;查询索引信息:selectindex_namefromuser_indexes;

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功