zoukankan      html  css  js  c++  java
  • (五)Oracle学习笔记—— 视图

    1. 视图简介

    视图是虚表,没有具体物理数据,是通过实体表的一种计算映射逻辑。主要就是为了方便和数据安全。

    2. 视图作用

    • 简化数据操作:视图可以简化用户处理数据的方式。
    • 着重于特定数据:不必要的数据或敏感数据可以不出现在视图中。
    • 视图提供了一个简单而有效的安全机制,可以定制不同用户对数据的访问权限。
    • 提供向后兼容性:视图使用户能够在表的架构更改时为表创建向后兼容接口。
    • 自定义数据:视图允许用户以不同方式查看数据。
    • 导出和导入数据:可使用视图将数据导出到其他应用程序。

    3. 创建视图

    在创建视图之前需要确认当前用户是否有创建视图权限

    select * from user_role_privs;   查看用户的角色
    SELECT * FROM DBA_SYS WHERE GRANTEE='DBA';    查看角色对应的权限
    grant dba to scott;    授予用户DBA权限
    grant create view to scott;    授予用户创建视图权限

    接下来创建视图

    --创建简单视图
    create view temp 
    as 
    select * from dept;
    --测试
    select * from temp where rownum=1;

    一般为保证数据安全,常常将视图设为只读视图

    --创建简单视图:只读
    create or replace view temp1
    as 
    select empno,ename,job,mgr from emp 
    with read only;
    --测试(不能插入)
    insert into temp1(empno,ename,job,mgr) values(1,'David','coder',9300);

    创建视图语句详解

    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操作。

    4. 使用视图

    语法和操作表的语法相同,这里不加详述

    查询:select * from temp1;
        select * from temp1 where ename like '%M%';
    修改:update temp1 set job='销售' where ename='sb';
    添加:insert into temp2 values('1110','Daming','技术');
    删除:delete from temp2 where empno=2222

    5. 删除视图

    drop view temp;
    •  删除视图的定义不影响基表中的数据。
    •  只有视图所有者和具备DROP VIEW权限的用户可以删除视图。
    •  视图被删除后,基于被删除视图的其他视图或应用将无效。

    6. 视图分类

    视图分为简单视图和复杂视图。

    • 简单视图只从单表里获取数据;复杂视图从多表里获取数据。
    • 简单视图不包含函数和数据组;复杂视图包含函数和数据组。
    • 简单视图可以实现DML操作;复杂视图不可以。
  • 相关阅读:
    .NET 4.0 中的契约式编程
    DELL安装Windows Server 2019
    Mysql 5.7.34免安装版本
    MQTT
    WPF属性
    WPF数据绑定
    git系列之(五)git stash 命令
    Vue.js
    git 对比两个分支差异
    TPL 之二 TransformBlock
  • 原文地址:https://www.cnblogs.com/zjfjava/p/7186036.html
Copyright © 2011-2022 走看看