Oracle中视图和同义词的区别

如题所述

Oracle中视图和同义词的区别如下:
视图和同义词分别都是数据库中的对象名称,它们都不对应实际的数据存储,都依赖其他对象的存在而存在。
一、视图:视图可以被看成是虚拟表或存储查询。除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中。一般是基于一个或多个数据表经数据查询语句构建而成;视图可以再被用于数据查询语句中。
二、同义词:是架构范围内的对象的另一名称。通过使用同义词,客户端应用程序可以使用由一部分组成的名称来引用基对象,而不必使用由两部分、三部分或四部分组成的名称。可以理解为是对数据库中一个对象的快捷方式或者在特定范围内的别名;不限于数据表,几乎所有的数据库对象都可以建立同义词。
1.视图可以对应一张或多张表,同义词只能对应一张表名称
2.视图可以设置其他约束条件
3.可以在同义词上建立视图:
例如,已经存在一个名为synonym_city的同义词和一个名为table_citys的表,可以创建视图:CREATE OR REPLACE NOFORCE VIEW view_city AS SELECT * FROM synonym_city,table_citys;
4.可以通过对同义词进行任何DML操作,对表数据进行插入、更新、删除,通过对视图只能进行更新和删除操作。
值得注意的是:视图和同义词都可以屏蔽用户访问其他用户拥有的表。
例如:现在存在两个用户:scott、sys,以sys用户登录
创建跨用户表的同义词:
CREATE OR REPLACE PUBLIC SYNONYM SYN_EMP for scott.emp;
创建跨用户的表的视图:
CREATE OR REPLACE VIEW view_EMP AS SELECT * FROM scott.emp
然后进行查询操作:
SELECT * FROM SYN_EMP ;
SELECT * FROM view_EMP ;
查询结果是一样的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-06-28
1、 视图

视图是从一个表或多个表中导出的虚表,它与常规表不同之处在于它并不存储数据—它只是在一个存储的查询中定义.视图同真实表一样,也包含一系列带有名称的列和数据。

视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
视图向用户提供基表数据的另一种表现形式
2,同义词
同义词是表,索引,视图等模式对象的一个别名。同义词只有是数据库对象的一个替代名词,在使用同义词是,Oracle 会将其翻译为对应的对象名称。同义词只在oracle数据库的数据词典中保存器定义的描述,因此同义词并不占用任何实际的存储空间。
Oracle 中的同义词分为两种:公有同义词和 私有同义词;公有同义词在数据库中所有的用户都可以使用;私有的同义词由创建它的用户所拥有,用户名可以控制其他用户是否有权使用属于自己的同义词。本回答被提问者和网友采纳
相似回答