视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

解决方案 »

  1.   

    1、视图是已经编译好的sql语句。而表不是
    2、视图没有实际的物理记录。而表有。
      

  2.   

    查询视图要慢些,因为视图是临时生成的。--这个可未必,简单视图不会比表满表是实实在在存放数据的东西,视图是一个sql你可以注意到,
    package , view , funciton , procedure, view ,trigger
    都可以用create or replace 来创建
    可是你见过 create or replace table ..吗?数据库最重要的是数据,view 被替换(或者drop)掉,数据仍然存在
    table被替换掉,数据就没了~~~~
      

  3.   

    视图用途多:
    安全 楼主说了
    方便:封装复杂的SQL查询 报表生成SIMPLE
    一致:
      

  4.   

    从某种意义上讲,试图就是一种表,你可以通过相同的sql语句来实现;
    但是,从数据分析的范式等等理论上来讲,一个表要体现实体的内容,而且不可分割是其最好的目的,这是系统分析的要求,而视图可以在众多的关系表的基础上,重新组织新的单一的关系实体。
    当然,楼上各位所讲的:它本身只是一个逻辑表,不是实际的物理表。
      

  5.   


      视图是方便查询用的,没有必要讨论查询简单视图和查询单表的效率.   例如 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%'    你再看看效率.  
        
      

  6.   

    leecooper0918(PajeroFans)请你说明理由,为什么
    “但是如果我们建立一个视图:
         CREATE VIEW view_EMP AS 
         SELECT NAME,ROWNUM FROM EMP
         GROUP BY NAME,ROWNUM    然后再执行:
         select name from view_EMP where NAME LIKE  'A%'    你再看看效率.
    ”就快??怎么可能?你试验过?
      

  7.   

    快慢不是视图和表的区别中的重要的东东,视图是一个虚表,所谓虚表就是不存储数据的啦,但是你查询的时候感觉不到你是在从视图还是表里查询数据。
    还有一个就是安全性的问题,视图可以屏蔽哪些不想让他们看见某些数据的用户,因为视图是“定制”的,而表是全裸的,就是如果你对一个表有了权限,那这个表的你都可以看见。
    其实关于这些关于oracle基础的书上讲的很多,此外比如函数,过程,包,触发器,同义词等,大概了解一下对于你学习oracle有很大的帮助。
    ------------------------------------------------------
    OTN 中文技术论坛
    OCP 认证 Oracle学习资料
    欢迎各路新手和高手光临!
    http://211.99.196.144:8090/forum1/frontshow/index.jsp
      

  8.   

    to leecooper0918(PajeroFans) ,所以我加了个限定:“某些固定而复杂的查询结果集”。
    全做成表当然不好了。但有些不做不行。因为视图太慢。
      

  9.   

    视图不是为了和表比谁快。视图提供了更加灵活的访问表的方式。现在都流行中间件,视图也可以看作是表和程序之间的一种中间封装。
    即使表需要变化,
    使用视图只需要调整sql。直接使用表,就只能到程序里面慢慢改了。
      

  10.   

    view是由不同的几个table的若干个column组成的虚拟的table,本质上是sql
      

  11.   

    有意思,这个问题居然都引出这么多帖子。有几位还争论起来了,table和view是基本概念啦,看看书就明了
      

  12.   

    请问一下:
    ORACLE 能通过视图来修改表数据吗?我这样做的时候会说什么不能是虚拟列??谢谢!
      

  13.   

    回复人: zenggao(天空下的云) ( ) 信誉:100  2003-12-2 16:39:20  得分:0  
      
    视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。关于视图的作用,这是其一;还有没有其二?