视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
解决方案 »
- 想用expdp导出用户的所有东西
- Oracle EBS中package 与function procedure 以及文件名的各种问题
- 问一个ARRAY型,为什么不能赋值??
- (40分)2个表之间求百分比
- 用dblink有哪些坏处?100分
- 在oracle中能把数据导出到csv文件中吗?
- 这个sql语句如何写,急!!!!!!在线等待
- 我知道Oracle中自增字段要建立sequence,然后取sequence的值。那假设我有100张表的主键都是自增字段,那岂不是要建立100个sequence。
- 程序中的编码解码问题
- ASP中使用Oracle的问题?
- 请问oracle的存储过程和函数能返回一个数据集吗!
- 非常好的oracle工具--TOAD
2、视图没有实际的物理记录。而表有。
package , view , funciton , procedure, view ,trigger
都可以用create or replace 来创建
可是你见过 create or replace table ..吗?数据库最重要的是数据,view 被替换(或者drop)掉,数据仍然存在
table被替换掉,数据就没了~~~~
安全 楼主说了
方便:封装复杂的SQL查询 报表生成SIMPLE
一致:
但是,从数据分析的范式等等理论上来讲,一个表要体现实体的内容,而且不可分割是其最好的目的,这是系统分析的要求,而视图可以在众多的关系表的基础上,重新组织新的单一的关系实体。
当然,楼上各位所讲的:它本身只是一个逻辑表,不是实际的物理表。
视图是方便查询用的,没有必要讨论查询简单视图和查询单表的效率. 例如 select * from T1
和
Create view view_t1 As select * from T1
select * from viewT1
效率是一样的。 但是经过处理的视图可能会比查询表快。举个简单的例子:
SELECT NAME FROM EMP WHERE NAME LIKE 'A%' 如果EMP表中的所有行已经是排好序的,那么查询效率将会很高。
但是经过大量的插入删除操作后,表中的记录已经不是排序的了 但是如果我们建立一个视图:
CREATE VIEW view_EMP AS
SELECT NAME,ROWNUM FROM EMP
GROUP BY NAME,ROWNUM 然后再执行:
select name from view_EMP where NAME LIKE 'A%' 你再看看效率.
“但是如果我们建立一个视图:
CREATE VIEW view_EMP AS
SELECT NAME,ROWNUM FROM EMP
GROUP BY NAME,ROWNUM 然后再执行:
select name from view_EMP where NAME LIKE 'A%' 你再看看效率.
”就快??怎么可能?你试验过?
还有一个就是安全性的问题,视图可以屏蔽哪些不想让他们看见某些数据的用户,因为视图是“定制”的,而表是全裸的,就是如果你对一个表有了权限,那这个表的你都可以看见。
其实关于这些关于oracle基础的书上讲的很多,此外比如函数,过程,包,触发器,同义词等,大概了解一下对于你学习oracle有很大的帮助。
------------------------------------------------------
OTN 中文技术论坛
OCP 认证 Oracle学习资料
欢迎各路新手和高手光临!
http://211.99.196.144:8090/forum1/frontshow/index.jsp
全做成表当然不好了。但有些不做不行。因为视图太慢。
即使表需要变化,
使用视图只需要调整sql。直接使用表,就只能到程序里面慢慢改了。
ORACLE 能通过视图来修改表数据吗?我这样做的时候会说什么不能是虚拟列??谢谢!
视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。关于视图的作用,这是其一;还有没有其二?