什么是视图?作用是什么?

2023-05-16

1.1. 视图
1.1.1. 什么是视图
视图(VIEW)也被称作虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应于一条SELECT语句,结果集被赋予一个名字,即视图名字。
视图本身并不包含任何数据,它只包含映射到基表的一个查询语句,当基表数据发生变化,视图数据也随之变化。

创建视图的语法:
01.CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])]
02.AS subquery ;
视图创建后,可以像操作表一样操作视图,主要是查询操作。
语法中的Subquery是SELECT查询语句,对应的表被称作基表。
根据视图所对应的子查询种类分为几种类型:
•SELECT语句是基于单表建立的,且不包含任何函数运算、表达式或分组函数,叫做简单视图,此时视图是基表的子集;
•SELECT语句同样是基于单表,但包含了单行函数、表达式、分组函数或GROUP BY子句,叫做复杂视图;
•SELECT语句是基于多个表的,叫做连接视图。
1.1.2. 视图的作用
如果需要经常执行某项复杂查询,可以基于这个复杂查询建立视图,此后查询此视图即可,简化复杂查询;
视图本质上就是一条SELECT语句,所以当访问视图时,只能访问到所对应的SELECT语句中涉及到的列,对基表中的其它列起到安全和保密的作用,可以限制数据访问。
1.1.3. 授权创建视图
创建视图的DDL语句是CREATE VIEW,用户必须有CREATE VIEW系统权限,才能创建视图。如果没有权限,创建视图时会提示:权限不足。
管理员可以通过DCL语句授予用户创建视图的权限。下例中管理员给用户tarena创建视图的权限:
01.GRANT CREATE VIEW TO tarena;
1.1.4. 创建简单视图(单表)
创建一个简单视图V_EMP_10,来显示部门10中的员工的编码、姓名和薪水:
01.CREATE VIEW v_emp_10
02.AS
03.SELECT empno, ename, sal, deptno
04.FROM emp
05.WHERE deptno = 10;
查看视图结构:
01.DESC v_emp_10;

1.1.5. 查询视图
查询视图和查询表的操作相同:
01.SELECT * FROM v_emp_10;
此时视图的列名,和创建视图时的列名一致,不一定是原列名:
01.SELECT id, name, salary FROM v_emp_10;
1.1.6. 对视图进行INSERT操作
视图本身并不包含数据,只是基表数据的逻辑映射。所以当对视图执行DML操作时,实际上是对基表的DML操作。对视图执行DML操作的基本原则:
•简单视图能够执行DML操作,下列情况除外:在基表中定义了非空列,但简单视图对应的SELECT语句并没有包含这个非空列,导致这个非空列对视图不可见,这时无法对视图执行INSERT操作;
•如果视图定义中包含了函数、表达式、分组语句、DISTINCT关键字或ROWNUM伪列,不允许执行DML操作;
•DML操作不能违反基表的约束条件。
对简单视图执行INSERT操作,成功插入数据到基表中:
01.INSERT INTO v_emp_10
02.VALUES(1234, ‘DOCTOR’, 4000, 10);
简单视图可以通过DML操作影响到基表数据。
1.1.7. 创建具有CHECK OPTION约束的视图
语法如下:
01.CREATE [OR REPLACE] VIEW view_name[(alias[, alias…])]
02.AS subquery
03.[WITH CHECK OPTION];
其中:WITH CHECK OPTION短语表示,通过视图所做的修改,必须在视图的可见范围内:
•假设INSERT,新增的记录在视图仍可查看
•假设UPDATE,修改后的结果必须能通过视图查看到
•假设DELETE,只能删除现有视图里能查到的记录
创建带有CHECK OPTION约束的视图:
01.CREATE OR REPLACE VIEW v_emp_10
02.AS
03.SELECT empno id, ename name, sal salary, deptno
04.FROM emp
05.WHERE deptno = 10
06.WITH CHECK OPTION;
下述DML语句操作失败,因为部门20不在视图可见范围内:
01.INSERT INTO v_emp_10 VALUES(1008,‘donna’,5500, 20);
02.UPDATE v_emp_10 SET deptno = 20 WHERE id = 7782;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是视图?作用是什么? 的相关文章

随机推荐

  • JavaScript splice() 函数

    今天遇到一个JavaScript里array的函数splice xff0c 构造非常奇特 W3Cschool中有如下介绍 xff0c 不在赘述参数内容 xff1a 可以看到 xff0c 其中的参数第一个是操作的数组下标index xff0c
  • 使用Python实现基于人脸识别的上课考勤系统(一):数据录入端

    一 简介 这个人脸识别考勤签到系统是基于大佬的人脸识别陌生人报警系统二次开发的 此处放一个大佬原项目GitHub链接 xff1a 基于OpenCV的视频人脸识别 陌生人报警 系统 项目使用Python实现 xff0c 基于OpenCV框架进
  • Vue.set()和this.$set()介绍 && element progress实时更新

    在我们使用vue进行开发的过程中 xff0c 可能会遇到一种情况 xff1a 当生成vue实例后 xff0c 当再次给数据赋值时 xff0c 有时候并不会自动更新到视图上去 xff1b 当我们去看vue文档的时候 xff0c 会发现有这么一
  • python笔记 getattr() delattr() setattr() hasattr()

    python是动态语言 xff0c 类型可以在运行时而不是编译时确定 xff0c 因此就有了非脚本语言所没有的特性 xff0c 可以动态设置对象的属性 attr xff0c 可以使用python内置函数getattr delattr set
  • Python setup()函数使用

    python 有很方便的包管理工具 pip xff0c 实际上任何第三方包都可以通过从对应的pip源一键下载安装 xff0c 并将其所有的依赖 xff08 requirements xff09 自动安装 安装第三方包的本质是可以通过一个方便
  • 数据结构图的建立和遍历(邻接表、邻接矩阵)

    以本代码为基础增加了对图的最短路径计算 路径记录 交互界面等功能 增加代码请看 数据结构课程设计 图的建立和遍历 邻接矩阵 43 邻接表 和最短路径dijkstra路径记录 首先是图的存储结构 xff1a 一 邻接矩阵存储方式实现 邻接矩阵
  • 同时安装了Python2和Python3时的pip使用

    在我电脑上同时安装了Python2和Python3 xff0c 当时按正常操作pip的使用默认是直接调用命令pip install 43 库名 的 xff0c 我在只使用Python3时安装request包时如下 xff1a 直接下载安装
  • Python实现可视化界面多线程豆瓣电影信息爬虫,并绘制统计图分析结果

    完整代码见链接 xff1a https github com kuronekonano python scrapy movie 实现时使用图形界面 多线程 文件操作 数据库编程 网络编程 统计绘图六项技术 1 数据采集 xff08 1 xf
  • Switch离线升级教程【自用】

    想写这篇博客的原因还是因为自己发现明明已经自己通过大佬指导以及论坛教程指导 xff0c 自己实践两次过了完整流程后 xff0c 仍会因为相隔太久的固件更新而遗忘到底如何离线升级 当然这也是自己写的第一篇对于自己实用性较高的生活小技巧 首先根
  • 树莓派上搭建NAS

    树莓派搭建NAS 1 目的 为了实现手机快速备份相片 xff0c MAC Windows iOS Android 多平台之间的资料整合 xff0c 考虑搭建内网使用的私有云 要求价格低 xff0c 体积小 xff0c 功耗低 xff0c 无
  • GLIBC中的库函数fflush究竟做了什么?

    目录 目录 1 1 库函数fflush原型 1 2 FILE结构体 1 3 fflush函数实现 2 4 fclose函数实现 4 附1 xff1a 强弱函数名 5 附2 xff1a 属性 visibility 6 库函数fflush原型
  • vim中如何把在外部复制的内容全部替换粘贴进去

    首先在普通模式下输入ggVG来进行全选 gg命令将光标移动到这个文件的第一列 V命令进行列选择 xff0c 光标经过的行会进行选择 G命令将光标移动到最后一行 3个命令执行后 xff0c 就全选了 然后输入d来将全选的内容删除 然后按i进入
  • iOS关于搜索不规则瀑布流布局的实现小结

    最近在项目开发中遇到了不规则搜索布局的问题 之前常用的解决方案是用一个tableview用一个循环动态的加载 xff0c 唯一的缺点是需要动态的移除 xff0c 其实也已经足够 ios搜索历史记录不规则布局 IOS代码类资源 CSDN下载
  • WORD论文撰写中的必备技巧-公式与排版

    word撰写科技论文时 xff0c 经常会遇到下列问题 xff1a xff08 1 xff09 公式大小与文字不匹配 xff1b xff08 2 xff09 公式对齐问题 xff1b xff08 3 xff09 公式编辑的字符在段落中如何与
  • AirSim(五)---理解篇: Airsim世界坐标系、NED坐标系、机体坐标系以及控制相关API接口函数

    目录 1 坐标系 coordinate system 1 AirSim API的坐标系 xff1a NED 坐标系 with SI unit 2 Unreal Engine的坐标系 xff08 3 xff09 AirSim全局坐标系 61
  • 【部署】外网访问家庭计算机( 内网穿透)

    场景 很多时候需要通过远程访问来进行跨网络跨机器 大部分的场景是访问公司机器 这种一般比较容易实现 xff0c 因为公司都是固定ip xff0c 或者有vpn服务等等 实在不行也可以有teamviewer xff0c anydesk xff
  • 使用wxWidgets开发跨平台的GUI程序

    使用wxWidgets开发跨平台的GUI程序 Taii 回家念经 2006 05 20 1 探索背景 xff1a 1 1 引言 从开始使用c c 43 43 编码起算来也快有5年了 xff0c 期间完成了无数项目 xff0c 编写了无数程序
  • R-4.0.2 forecast预测

    library 34 forecast 34 skirts lt scan 34 http robjhyndman com tsdldata roberts skirts dat 34 skip 61 5 skirtsts lt ts sk
  • Linux远程连接图形界面的几种方法

    1 xff0c 利用Xmanager xff0c linux启用XDMCP协议 xff08 可直接修改配置文件 xff0c 也可以采用在Xshell中运行gdmconfig或gdmsetup xff0c 选择XDMCP选项卡 xff0c 勾
  • 什么是视图?作用是什么?

    1 1 视图 1 1 1 什么是视图 视图 VIEW 也被称作虚表 xff0c 即虚拟的表 xff0c 是一组数据的逻辑表示 其本质是对应于一条SELECT语句 xff0c 结果集被赋予一个名字 xff0c 即视图名字 视图本身并不包含任何