zoukankan      html  css  js  c++  java
  • 表和视图的区别

    1.表  create or replace table  emp (id int,name varchar);

    2.视图  create or replace view emp as select id from emp;

    当emp表的数据增删改的时候,视图里的数据也随着变化,视图也可以增删改,但是要符合逻辑条件(尤其是复杂视图)

    区别如下:

    1、视图是已经编译好的sql语句。而表不是   
    2、视图没有实际的物理记录。而表有。
    3、表是内容,视图是窗口
    4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在
    5、表是内模式,试图是外模式

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

    7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。 
    8、视图的建立和删除只影响视图本身,不影响对应的基本表。

    注意:

    1.视图是一个子查询,性能肯定会比直接查询要低(尽管sql内部有优化),所以使用视图时有一个必须要注意的,就是不要嵌套使用查询。尤其是复杂查询。

    2.表的索引对于视图view来说是无效的,它是全表扫描的。

    视图的作用:

    1、当一个查询你需要频频的作为子查询使用时,视图可以简化代码,直接调用而不是每次都去重复写这个东西,有点高级语言中的封装的意思吧。
    2、其实视图还有很多其他的用处,比如说你是一个系统的数据库管理员,你需要给他人提供一张表的某两列数据,而不希望他可以看到其他任何数据,这样你就可以给他建一个只有这两列数据的视图,然后把视图公布给他。

    视图例子: with check option

      

    SQL> create or replace view v_test as select * from test;
    View created.
    SQL> select * from v_test where rownum<5;
    TABLE_NAME
    ------------------------------
    ICOL$
    IND$
    COL$
    CLU$
    SQL> insert into v_test values('test111');
    1 row created.
    SQL> select * from v_test where table_name ='test111';
    TABLE_NAME
    ------------------------------
    test111
    SQL> create or replace view v_test as select * from test where table_name like 'S%' with check option;
    View created.
    SQL> insert into v_test values('a111');
    insert into v_test values('a111')
               *
    ERROR at line 1:
    ORA-01402: view WITH CHECK OPTION where-clause violation
    

      

    参考资料:

    1.https://blog.csdn.net/zengmingen/article/details/51004203

        

  • 相关阅读:
    toPrimitive方法使用
    使用js导入Excel数据,转化为json,导出指定json,合并单元格为excel
    vue-router基本使用
    json另类使用
    z-index无效情况
    构造函数另类使用。
    在worker中使用offscreenCanvas
    使用git提交代码一条龙
    IntelliJ IDEA使用技巧一览表
    Android studio 常用快捷键
  • 原文地址:https://www.cnblogs.com/jycjy/p/7216089.html
Copyright © 2011-2022 走看看