• CHIL-ORACLE-创建视图


    一.what(什么是视图?)
    
    1.视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询的结果。
    2.根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。
     
    
    二.why(为什么要用视图?视图的优点)
    
    1.简化数据操作:视图可以简化用户处理数据的方式。
    2.着重于特定数据:不必要的数据或敏感数据可以不出现在视图中。
    3.视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限。
    4.提供向后兼容性:视图使用户能够在表的架构更改时为表创建向后兼容接口。
    5.自定义数据:视图允许用户以不同方式查看数据。
    6.导出和导入数据:可使用视图将数据导出到其他应用程序。
     
    用途:
      屏蔽对象的名字及其持有者
      限制对表中的一组行为访问
      隐藏数据的复杂性
      简化了用户的SQL
      基表定义修改隔离
      通过重命名列,从另一个角度提供了数据

    DML 操作
      只能对基表进行操作
      注意权限问题
    
    三.how(视图的创建语法、删除、demo)
    复制代码
    CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name   
    
    [(alias[, alias]...)]   
    
    AS subquery  
    
    [WITH CHECK OPTION [CONSTRAINT constraint]]   
    
    [WITH READ ONLY] 
    
    OR REPLACE    :若所创建的试图已经存在,ORACLE自动重建该视图;
    FORCE  :不管基表是否存在ORACLE都会自动创建该视图;
    NOFORCE   :只有基表都存在ORACLE才会创建该视图:
    alias :为视图产生的列定义的别名;
    subquery     :一条完整的SELECT语句,可以在该语句中定义别名;
    WITH CHECK  OPTION :插入或修改的数据行必须满足视图定义的约束;
    WITH READ ONLY :该视图上不能进行任何DML操作。
    
    CREATE  OR  REPLACE  VIEW  dept_sum_vw 
    (name,minsal,maxsal,avgsal) 
    AS 
    SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal) 
    FROM emp e,dept d 
    WHERE  e.deptno=d.deptno 
    GROUP  BY  d.dname; 
    

    查询视图:select * from syn_teacher

    --给用户授权创建视图
    -- grant create all view to zdgshr;      所有数据库都能创建视图的用户
    grant create view to zdgshr;
    
    --创建简单视图
    create view temp 
    as 
    select * from zd_member_basic_info;
    --测试
    select * from temp where rownum=1;
    
    --创建简单视图:只读
    create or replace view temp1
    as 
    select id,job_number,name,dept_id from zd_member_basic_info 
    with read only;
    --测试
    insert into temp1(id,job_number,name,dept_id) values(1,0,'张三',1300);
    复制代码
    视图的删除:
    
                DROP VIEW  VIEW_NAME语句删除视图。
                删除视图的定义不影响基表中的数据。
                只有视图所有者和具备DROP VIEW权限的用户可以删除视图。
                视图被删除后,基于被删除视图的其他视图或应用将无效。
     
    
    四、视图分为简单视图和复杂视图。
    
    简单视图只从单表里获取数据;复杂视图从多表里获取数据。
    
    简单视图不包含函数和数据组;复杂视图包含函数和数据组。
    
    简单视图可以实现DML操作;复杂视图不可以。
    
    复制代码
    create or replace view temp1
    as 
    select distinct name,job_number,dept_id from zd_member_basic_info 
    with read only;
    delete from zd_member_basic_info where name='而过';
    
    create or replace view temp 
    as 
    select * from zd_member_basic_info order by name;
    
    4.创建视图(create view )
        
        视图实际上是存储在数据库上旳 select语句.每次在sql语句中使用视图时,表示该视图的select语句就用来得到需要的数据. 
    
    4.1.创建视图语法:  
     
         CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW [schema.]view_name     
         [(alias [,alias]...)]  
         AS subquery 
       [WITH CHECK OPTION [CONSTRAINT constraint]]
    
         注释:
         Or replace --创建视图时如果视图已存在,有此选项,新视图会覆盖旧的视图. 
         Force --如有此选项,当视图基于的表不存在或在该模式中没有创建视图的权限时,也可以建立视图.
         noforce   -- 
         schema.   --
         As subquery --产生视图的select查询语句 
         With check option --如果视图是基于单表的且表中所有的非空列都包含在视图中时,该视图可用于insert和update语句中,本选项保证在每次插入或更新数据后,该数据可以在视图中查到 
         CONSTRAINT constraint  --
         
      例如: 
         create or place view new_v  as 
         select substr(d.d_last_name,1,3), 
                      d.d_lastname,
                            d.d_firstname,
                            b.b_start_date,
                            b.b_location    
            from new1 d,ew2 b 
         where d.d_lastname=b.b_lastname;

      1. 以dba用户登录
         
        1. sqlplus / as sysdba  
      2. 赋予scott用户创建VIEW的权限
     
    1. grant create view to scott  
    1. 以scott用户登录oracle
       
      1. conn scott/tiger  
    2. 创建视图成功
       
      1. CREATE OR REPLACE VIEW myview AS   SELECT * FROM emp where deptno = 20;  
  • 相关阅读:
    剑指Offer(书):重建二叉树
    剑指Offer(书):从尾到头打印链表
    剑指Offer(书):替换空格
    剑指Offer(书):二维数组中的查找
    剑指Offer(书):数组中重复的数字
    剑指Offer(书):实现单例模式
    Centos 7安装Mysql5.7
    3000客接口迁移一记
    安装完Centos 7后的一些处理
    算法笔记—入门篇(2)—算法初步(更新中......)
  • 原文地址:https://www.cnblogs.com/ChineseIntelligentLanguage/p/6513290.html
Copyright © 2020-2023  润新知