Mysql中视图操作
文章目录
- 视图
- 1)创建视图
- 2)删除视图
- 3)对视图进行查询操作
- 4)更新视图
- a. 插入数据
- b. 删除数据
- c. 更新数据
- a. 插入数据
- b. 删除数据
- c. 更新数据
视图
1)创建视图
关系数据库管理系统执行CREATE VIEW语句的结果只是把视图的定义存入数据字典,并不执行其中的SELECT语句。只是在对视图查询时,才按视图的定义从基本表中将数据查出。
create view 视图名 (列名1, 列名2, ...) AS 子查询 with check option
WITH CHECK OPTION表示对视图进行UPDATE、INSERT和DELETE操作时要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)。
with check option默认是cascade,即级联检查,等价于with cascaded check option
在更新数据时会保证数据符合视图的条件。如视图是根据专业是IS创建的,插入一个非IS专业的学生是不符合条件的,拒绝插入数据
有条件检查会检查条件是否满足。满足才插入数据。
没有条件检查时,都会插入数据(向视图数据来源),但是视图中只会显示符合视图条件的数据
组成视图的属性列名或者全部省略或者全部指定,没有第三种选择。如果省略了视图的各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段组成。但在下列三种情况下必须明确指定组成视图的所有列名:
- 某个目标列不是单纯的属性名,而是聚集函数或列表达式
- 多表连接时选出了几个同名列作为视图的字段
- 需要在视图中为某个列启用新的更合适的名字
创建的视图作为数据表被显示
2)删除视图
drop view 视图名 [cascade]
视图删除后视图的定义将从数据字典中删除。如果该视图上还导出了其他视图,则使用CASCADE级联删除语句把该视图和由它导出的所有视图一起删除。基本表删除后,由该基本表导出的所有视图均无法使用了,但是视图的定义没有从字典中清除。删除这些视图定义需要显式地使用DROP VIEW语句。
3)对视图进行查询操作
对视图的查询完全可以当初对数据表的查询。因为视图是一个虚拟表。
4)更新视图
更新视图是指通过视图来插入(NSERT)、删除(DELETE)和修改(UPDATE)数据。由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新。像查询视图那样,对视图的更新操作也是通过视图消解,转换为对基本表的更新操作。
为防止用户通过视图对数据进行增加、删除、修改时,有意无意地对不属于视图范围内的基本表数据进行操作,可在定义视图时加上WITH CHECK OPTION
子句。这样在视图上增、删、改数据时,关系数据库管理系统会检查视图定义中的条件,若不满足条件则拒绝执行该操作。
a. 插入数据
建表时添加了with check option
, 会进行条件检查。表要求adept = ‘is’,插入的数据中adept = null,不符合视图规则,条件检查失败,拒绝插入数据。
b. 删除数据
视图数据来源相应数据也被删除
c. 更新数据
在原表中的数据也发生了更改
询视图那样,对视图的更新操作也是通过视图消解,转换为对基本表的更新操作。
为防止用户通过视图对数据进行增加、删除、修改时,有意无意地对不属于视图范围内的基本表数据进行操作,可在定义视图时加上WITH CHECK OPTION
子句。这样在视图上增、删、改数据时,关系数据库管理系统会检查视图定义中的条件,若不满足条件则拒绝执行该操作。
a. 插入数据
建表时添加了with check option
, 会进行条件检查。表要求adept = ‘is’,插入的数据中adept = null,不符合视图规则,条件检查失败,拒绝插入数据。
b. 删除数据
视图数据来源相应数据也被删除
c. 更新数据
在原表中的数据也发生了更改
Mysql中视图操作相关推荐
- MySQL中DELETE操作磁盘空间不会减少的原因
MySQL中delete操作 在InnoDB中,delete操作并不会真的删除数据,mysql实际上只是给要删除的数据打了标记,标记为删除.磁盘所占空间不会变小,即表空间并没有真正被释放. 这样设计的 ...
- MySQL中视图与表的区别
1.MySQL中视图和表的区别以及联系 (1)视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,而表不是. (2)视图没有实际的物理记录,而表有. (3)表是内存,视图是窗口. (4 ...
- mysql中视图和表的区别及联系,mysql 中视图和表的区别以及联系是什么?
表是内容,视图是窗口.视图是已经编译好的sql语句,是基于sql语句的结果集的可视化的表,而表不是. 2)实与虚 表属于全局模式中的表,是实表:视图属于局部模式的表,是虚表. 3)是否存在物理记录 视 ...
- mysql中视图和表的区别及联系_MySQL中Update、select联用操作单表、多表,及视图与临时表的区别...
一.MySQL中使用从表A中取出数据来更新表B的内容 例如:要update表data中的一些列属性,但是修改属性的内容来源是来自表chanpin.SQL语言中不要显示的出现select关键字 upda ...
- Python在mysql中进行操作是十分容易和简洁的
首先声明一下,我用的是Windows系统! 1.在Python中对mysql数据库进行操作首先要导入pymysql模块,默认情况下,Python中是没有安装这个模块的, 可以在Windows的命令行 ...
- mysql中的操作指令,MySQL中常用指令操作的介绍(代码示例)
本篇文章给大家带来的内容是关于MySQL中常用指令操作的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. l 创建数据库:CREATE DATABASE table_n ...
- 13、mysql中视图的应用
是什么 视图是一种有结构没结果的虚拟表,其结构是从基表中产生的,视图主要用于查询数据.在sql层面上来看,视图就是对select查 询语句的封装,我们看到的虚拟表(也就是视图)就是select语句查询 ...
- MySQL中视图和触发器学习
创建视图的语法: 其中,algorithm是可选参数,表示视图选择的算法,它有三个选项:undefined,merge,temptable.Undefined表示让MySQL自动选择所要使用的算法:m ...
- mysql 日期详解,MySQL中如何操作日期的详解
日期是数据库存储很重要的一部分,下面总结下在MySQL中常用的日期操作 1.select curDate(); #获取当前日期select curTime(); #获取当前时间select now() ...
最新文章
- python精彩编程200例pdf下载-最经典的25本Python编程开发电子书(附下载地址)!...
- C. Woodcutters【贪心】
- Socket之UDP客户端【Python】
- P4015 运输问题
- webcontent 与 webroot 问题解决
- java+JNI 生成包头文件与调用实例
- macbook pro M1Pro安装java开发环境,jdk和eclipse安装包快速下载方式
- 汇川技术小型PLC梯形图编程系列教程(零):梯形图编程学习指南
- 基于马科维茨与蒙特卡洛模型的资产最优配置模型(Matlab代码实现)
- wincc控件之FlexGrid系列(注册安装)
- d3d示例程序_3D打印改变我们现实的10个示例
- 数据治理---Apache Atlas元数据管理
- canvas绘制图片时宽高2倍
- php导出word文档图片不显示,word文档几种不显示图片的解决方法
- 折线图css,echarts实现折线图的代码(附图)
- EtherCAT运动控制卡的电子凸轮追剪飞剪等应用(一)
- 等保合规2022系列 | 一个中心+三重防护,助力企业等级保护建设更科学
- 微信内置浏览器清除 cookie
- 剧推|2019hulu原创剧集激情推荐!
- Deep Learning for Image and Point Cloud Fusion in Autonomous Driving: A Review(自动驾驶图像点云融合深度学习综述)论文笔记
热门文章
- python实现复制文件内容_python实现复制大量文件功能
- 玩家端游经常掉线怎么办
- 汤姆大叔博客笔记【随时更新】
- linux卸载docker
- 黑马前端h5团队开发代码规范
- 301和302状态码区别
- 基于ZYNQ移动机器人控制器设计(3)控制器硬件方案选型
- Day675.Tomcat的“高层们” -深入拆解 Tomcat Jetty
- ansible:permissive: access permissions must restrict access to only the owner
- 玩王者技术太菜,或许读者可以看看小编的这篇文章