Oracle的视图和SQLServer的视图基本一样。

视图,是一个虚拟的表,不会给视图分配存储空间。视图的建立需要依赖于单个或多个普通表,被依赖的普通表就成为"基表"。可以就像 用 select 语句类似,在某些表中选取字段和筛选条件,可以查询出数据,把这数据构成一张虚拟的表,这就叫视图。

视图隐藏了数据的复杂性,还可以方便用户的查询,另外,还可以隔离物理表结构改变。视图通常是用来查询的,也可以对视图进行增删改。但是在视图上进行增删改要满足一些前提: 单表视图可以进行增删改操作;在多表视图中,只能对 键保留表进行删改操作;或者 定义触发器,替换掉增删改语句。对视图进行新增、删除、修改视图的数据是会把关联的基表数据给改变的。

视图创建语句如下,也可以在视图上创建视图

CREATE[OR REPLACE] VIEW  [viewName]
ASselect s.sno,s.sname,s.deptno from STUDENT s
[WITH CHECK OPTION]
[WITH Read ONLY];

例如 创建了带主键的表DEPARTMENT、STUDENT 一个多表视图VW_STU_DEPT   两个单表视图

---建立表---
CREATE TABLE DEPARTMENT(
DEPTNO CHAR(3) PRIMARY KEY,
DEPTNAME VARCHAR2(20)
);
INSERT INTO DEPARTMENT VALUES('001','中文系');
INSERT INTO DEPARTMENT VALUES('002','数学系');
INSERT INTO DEPARTMENT VALUES('003','英语系');
---建立表---
CREATE TABLE STUDENT(SNO NUMBER (6) PRIMARY KEY,SNAME VARCHAR2(10),DEPTNO CHAR(3),CONSTRAINT dep_DEPARTMENT FOREIGN KEY (DEPTNO) REFERENCES DEPARTMENT(DEPTNO)
);
INSERT INTO STUDENT VALUES(1,'张三','001');
INSERT INTO STUDENT VALUES(2,'李四','001');
INSERT INTO STUDENT VALUES(3,'王五','002');
----建立多表视图----
CREATE VIEW  VW_STU_DEPT
asselect s.sno,s.sname,s.deptno dept1,d.deptno dept2,d.deptname from STUDENT s,DEPARTMENT dwhere s.deptno=d.deptnocommit;
------建立单表视图----
CREATE VIEW  VW_STU1
asselect s.sno,s.sname,s.deptno from STUDENT swhere deptno='001';
------建立单表视图----
CREATE   VIEW  VW_STU2
asselect s.sno,s.sname,s.deptno from STUDENT swhere deptno='001'
WITH CHECK OPTION;

视图是一个虚拟表,查询视图的方法和查询表是一样的。单表视图是可以进行修改的:

我们可以看见,单表视图 VW_STU1 被成功修改,修改完后数据少一行的原因就是这个视图的筛选条件只有STUDENT表上的 字段depno值要为 '001'  才会被纳入视图 VW_STU1 。

我们Rollback 后,再对VW_STU2 视图进行相同的SQL操作

发现程序报错的原因就在于 VW_STU2,加了 WITH CHECK OPTION 条件,这个条件禁止了把视图数据减少的修改语句,但是增改操作还是可以的。 如果把视图设为只读,在创建视图的时候设定 WITH READ ONLY 就行,这样就无法对视图进行增删改操作。

键保留表就是在定义视图的时候,能够在视图上保留主键的基表

很明显,对于视图VW_STU_DEPT 中 保留了STUDENT基表上的主键,那么STUDENT就是 键保留表,视图只能对键保留表进行修改操作,不能对非键保留表进行修改操作,新增删除依旧是可以的。

无法对多表视图进行新增操作

但是可以对多表视图进行删除操作:

同时会影响到键保留表数据,但是不会影响到非键保留表数据

总而言之,在单表视图中可以进行增删查改操作,在多表视图中只能对键保留表进行 删查改 操作,无法修改普通表的。换言之,如果视图没有关联的表里面没有主键,那么就肯定无法进行增删改操作。

删除视图:

DROP VIEW  [视图名];

Oracle 原理: 视图,对视图进行增删改操作相关推荐

  1. Oracle 11G 监控单张表的增删改操作

    前言:      线上oracle数据库有张表的数据有些乱,根据应用db的log和应用的log也没有检查出来谁修改了,所以决定把这张单表做个详细的insert.update.delete监控. 一:使 ...

  2. Oracle数据库的增删改操作介绍

    前面的博文介绍了Oracle的简单查询操作,博客地址:http://blog.csdn.net/weixin_36380516/article/details/65935879 这里再对Oracle的 ...

  3. python操作Oracle、PostgreSQL,MySql数据库增删改查

    python操作Oracle.PostgreSQL,MySql数据库增删改查,工作中可运行案例,直接上代码,供大家参考. # _*_ coding:UTF-8 _*_#import ServerCon ...

  4. PHP操作MySQL数据库(连接、增删改操作)

    MySQL 是跟 PHP 配套使用的最流行的开源数据库系统,我们知道MySQL是PHP的最佳搭档,下面是系统的总结PHP与MySQL联合使用的方法.主要是使用MySQL扩展,下面就通过归纳总结来提升. ...

  5. SqlSugar增删改操作

    系列文章目录 第1章 SqlSugar-表到实体.实体到表及库表操作 第2章 SqlSugar增删改操作 第3章 SqlSugar查询操作 文章目录 系列文章目录 一.环境准备 二.增 2.1.插入单 ...

  6. dom对html增删改操作,6.DOM对HTML元素的增删改操作

    节点的增删改操作 function createNode(){ //创建一个li元素 var li = document.createElement("li"); li.inner ...

  7. MySQL——数据库的增删改操作

    数据库的增删改操作 数据库的增操作 数据库的增操作主要涉及数据库的增加.数据表的增加.表记录增加以及表字段增加等.数据库的增加非常简单,就是新创建一个数据库:表记录的增加指的就是新增表的数据行,可以是 ...

  8. 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式

    一. 背景 说起EF的增删改操作,相信很多人都会说,有两种方式:① 通过方法操作  和  ② 通过状态控制. 相信你在使用EF进行删除或修改操作的时候,可能会遇到以下错误:" The obj ...

  9. mysql 编辑数据库内容_详解mysql数据库增删改操作

    插入数据 insert into 表名(列名1,列名2,列名3) values(值1,值2,值3); insert into user(user_id,name,age) values(1,'nice ...

最新文章

  1. 2021中科院院士候选名单出炉:清华胡事民、南大周志华等人在列
  2. linux开机流程、模块管理与Loader(续)
  3. EntityFramework之摸索EF底层(八)
  4. 获取表中的某个字段名
  5. mac iTunes启动失败,声称iTunes文件夹被锁定
  6. 李秀计算机文化基础,计算机文化基础(李秀)绪论.pptx
  7. ie11浏览器可以下载java吗_解析:WindowsXP系统能否安装IE11浏览器
  8. OpenCV图像、矩阵、数组介绍
  9. linux 下安装fbprophet
  10. salesforce php,具有自动登录功能的Salesforce php REST API
  11. 关于JS中和||用法技巧
  12. bzoj 1257: [CQOI2007]余数之和sum
  13. 弹性碰撞次数与圆周率的关系 - 3Blue1Brown
  14. X Window 用户指南
  15. Excel 条件格式应用及原理
  16. 前端基础学习之css3-(border-image)实现边框图片自适应填充
  17. GitHub开源神器:教你如何实现 PDF 转 Word
  18. 还在为制作大屏苦恼?这个Smartbi神器才是你的出路
  19. 语义分割学习笔记(一)
  20. mysql没有表空间,MySQL的表空间是什么

热门文章

  1. 捕获分组和非捕获分组以及命名分组
  2. C#实现Access导入导出Excel
  3. Android应用性能优化之使用SparseArray替代HashMap(转)
  4. 微软面试题目(一) 计算两个日期之间的天数
  5. WP博客wordpress,robots.txt写法
  6. 转:[C#]获取某年指定周的开始日期和结束日期的通用方法
  7. HP Network Team #1: PROBLEM
  8. 【通信原理】【实验】实验三: 数字调制解调实验2ASK--2FSK--2PSK思路(GZHU)
  9. Spring IOC注入Map接口小技巧
  10. manjaro kde 21.2.5使用x11桌面可以正常使用搜狗输入法