1、视图&同义词,目录,视图,定义:视图是由已存在的数据,通过一定的运算规则,来获得新的数据集合。视图内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。,视图的种类,关系视图,关系视图就是经过存储的查询,可以将其输出看作是一个表。它就是基于关系数据的存储对象。可以将视图看作是虚拟表,可以像查询表一样地查询视图。,关系视图,创建关系视图使用CREATE VIEW语句创建视图的部分语法形式如下:,CREATE OR REPLACE FORCE | NOFORCE VI
2、EW view_name column1, column2 AS query WITH CHECK OPTION CONSTRAINT constraint_name WITH READ ONLY,关系视图,强制创建视图 create force view as,,关系视图,强制创建视图,,关系视图,修改关系视图:create or replace view,,获取视图的有关信息,WITH CHECK OPTION选项 此选项的作用可以这样理解: 使用此选项后,通过视图进行的修改,必须也能通过该视图看到修改后的结果。比如INSERT操作,那么加入的记录在刷新视图后必须可以看到;如果修改,修改完
3、的结果也必须能通过该视图看到;如果删除,当然只能删除视图里有显示的记录。常见的错误在于在定义视图的字查询语句中使用了选择条件,而在插入时忽视了此选择条件。,获取有关视图的信息,WITH READ ONLY选项 可以在创建视图时带上WITH READ ONLY 选项,以确保无DML操作发生。也就是说该视图将被创建为只读视图。用户将不能通过视图修改数据。 任何对带只读约束的视图进行的插入或修改行的尝试,Oracle都将提示错误。,,对视图的验证,当创建视图时,Oracle将会验证视图的有效性。以后,改变基本表的特性有可能导致视图无效。例如,以下操作将导致视图无效: 改变列的名称,或从基本表或视图中
4、完全删除列。 删除构建视图的基本表或视图。 改变基本表或视图,使其无效,这样将导致视图变得无效。为了解决上述问题,可以使用alter view view_name compile命令重新编译视图,或者使用create or replace view命令重新创建视图,或者修正视图所基于的基本表或视图。,内嵌视图,内嵌视图( inline view,内建视图,内联视图) 内嵌视图是一个带有别名(或相关名)的、可以在SQL语句中使用的子查询。 内嵌视图不是模式对象。从根本上来讲,内嵌视图就是嵌入到父查询中的查询,能够在任何可以使用表名称的地方使用。内嵌视图可以出现在select语句的from子句中,
5、也可以出现在insert into、update、delete from等语句中。内嵌视图是临时的,它只存在于父查询的运行期间,但是它可以让开发人员有能力在整个查询的任何部分中使用视图结果。,内嵌视图,示例:,对象视图,Oracle的对象 关系技术是构建在关系结构上的对象层。在对象层以下数据需要存储在关系表中,但是Oracle允许用户将这些数据封装在对象类型中。所以,为了获取特定雇员的信息,用户可以不再考虑从emp表的某些列中进行选择,而是可以考虑选择由存储在数据库中的对象模型化的单独客户。 如果已经创建了应用,而且只能够使用用户模式中的关系表,如果希望在不重新设计用户模式并且重新构建用户应用
6、的前提下,利用Oracle中的对象 关系特性,那么应该怎么办呢?这里可以提供一个解决方案:对象视图。 用户可以基于用户的对象类型创建对象视图,然后可以像平常一样通过这些视图查询并且修改数据。,对象视图,创建对象视图其中,of course表示该视图基于对象类型course;with object oid(cno)为对象视图指定了对象标识符。一旦指定了oid,将可以利用Oracle内建数据类型REF来引用对象。,,对象视图,查询对象视图,,对象视图,对于对象视图,可以利用value() 函数获取记录到对象的映射。例如,在表sc299中存储了学生选课成绩,同事存储了CNO信息。可以创建一个新的视图
7、vw_sc_course来获得学生的选课成绩和课程的详细信息。value(o) e用于获得course实例,并指定别名e。,对象视图,更新对象视图更新对象包括两包面的内容:插入数据和修改已有数据。其操作方式与关系视图完全相同,下面以插入数据为例。其中,course(22,ORACLE)用于实例化一个course类型的对象,并可以在value中直接使用该对象来实现插入操作。,,对象视图,分别查询表course299及视图ov_course来验证更新是否成功。,,4种视图的特点及应用场景,同义词,同义词是表、索引、视图等模式对象的一个别名。通过模式对象创建同义词,可以隐藏对象的实际名称和所有者信息
8、,或者隐藏分布式数据库中远程对象的设置信息,由此为对象提供一定的安全性保证。 同义词只在Oracle数据库的数据字典中保存其定义描述,因此同义词也不占用任何实际的存储空间。 Oracle中同义词分两种类型:公有同义词私有同义词,,同义词,公有同义词:公有同义词被一个特殊的用户组PUBLIC所拥有,数据库中的所有用户都可以使用。 私有同义词:私有同义词植被创建它的用户所拥有,只能由该用户以及被授权的其他用户使用。,同义词,创建同义词删除同义词,CREATE PUBLIC SYNONYM synonym_name FOR object_name;,DROP PUBLIC SYNONYM synonym_name;,Thank You !,