您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 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;
本文标题:ORACLE04数据库对象
链接地址:https://www.777doc.com/doc-8638038 .html