4. 哪些视图中的数据不可以增删改操作?_MySQL之视图
SQL语言之视图
前言
本章我们将学习MySQL中的视图,视图是数据库中的重要组件,本文将从视图是什么,视图的作用,创建和使用视图以及修改视图这些方面讲解视图。
视图是什么
视图View是一种虚拟的表,本身不保存数据,内部封装了一条SELECT语句,数据来源于查询的一张或多张实际数据的表。
视图的结构和真实的表相同,也是有行和列组成,在视图上也可以进行增删改查的操作。
视图的作用
视图主要用于查询,使用视图的优点是:
简单
视图可以将复杂的查询语句进行封装,用户使用时不需要关心表的结构、连接关系、筛选条件、分组和排序等等,只需要对视图进行简单的查询。
安全
创建视图时,可以筛选掉一些不希望用户看到的行和列,也可以给视图设置访问权限,让不同级别的用户看到不同的视图,从而提高数据库的数据安全性。
视图的语法
创建视图
create view视图名
as
select语句;
删除视图
drop view视图名;
修改视图
replace view 视图名
as
select语句;
使用视图
selec * from 视图名 [where 条件];
代码案例:
-- 在单表上创建视图 查询女同学的视图
create view view_female_stu
as
select * from tb_student where stu_gender = '女';
-- 使用视图
select * from view_female_stu
-- 使用连接查询创建视图,查询学生姓名、课程和分数
create view view_stu_score
as
select s.stu_id 学号, s.stu_name 姓名,c.course_name 课程,sc.score 分数
from tb_student s left join tb_score sc on s.stu_id = sc.stu_id
left join tb_course c on c.course_id = sc.course_id;
-- 使用视图
select * from view_stu_score where 分数 > 80;
注意:在创建视图时,查询语句中的别名会作为视图的列名
视图的修改
视图主要用于查询,但是也可以执行insert、update和delete语句,结果会映射到视图关联的实际表中。
-- 更新学生的年龄
update view_female_stu set stu_age = stu_age + 3 where stu_id = 4;
执行上面代码的结果是,实际的tb_student表被更新了。
-- 更新学生分数
update view_stu_score set 分数 = 83 where 学号 = 1;
执行上面代码的结果是,更新失败,出现错误:
为什么有的视图可以更新,而有的会失败呢?
下面情况的视图不可以执行insert、update和delete操作:
多表连接
包含distinct
包含聚合函数
包含group by
包含order by
包含union、union all
包含子查询等
所以对视图执行DML操作的限制条件还是很多的,大多数情况下我们还是对视图进行查询,如果需要DML操作还是建议对实际表进行操作。
总结
视图是一种虚拟的表,数据来源于从实际表中查询的结果,它可以简化查询操作,以及提高数据库的安全性,本章学习了视图的创建和使用语法,视图可以修改但是有比较多的限制条件,一般还是用于查询。
4. 哪些视图中的数据不可以增删改操作?_MySQL之视图相关推荐
- Oracle 原理: 视图,对视图进行增删改操作
Oracle的视图和SQLServer的视图基本一样. 视图,是一个虚拟的表,不会给视图分配存储空间.视图的建立需要依赖于单个或多个普通表,被依赖的普通表就成为"基表".可以就像 ...
- 关于从基于Mult-Org的视图中查询数据的问题(转)
.Report视图中的数据? fnd_global.APPS_Initialize( user_id=>3070, resp_id=>50650, resp_appl_id =>20 ...
- 如何在使用ASPMVC4的分部视图中获取数据展示
如何在使用ASPMVC4的分部视图中获取数据展示 在ASPMVC4中,创建的网站项目会用到分部视图,通过@Html.Partial("视图名")来加载到页面上: 但是如何把数据附加 ...
- sql server中如何修改视图中的数据?
原文地址::https://www.cnblogs.com/xielong/p/10516975.html 相关文章 1.MYSQL 视图的不可以更改数据----https://blog.csdn.n ...
- mysql视图中可以删除数据吗_sql問題 删除视图中的数据,表中的数据会删除吗?
如果你那个视图,是 单表的, 没写 触发器的. 那么 如果 删除视图中的数据 成功了,那么 表中的数据 就被删除了. 如果那个视图, 写了个 INSTEAD OF 触发器. 但是里面没有任何删除的动作 ...
- Python字典(字典的定义,创建字典,获取字典中的数据,字典元素增删改,获取字典视图,字典的遍历,字典的特点,字典生成公式)
1.字典的定义 2.创建字典 3.获取字典中的数据 4.字典元素增删改 5.获取字典视图 lst={'数值1':300,'数值2':100,'数值3':400,'数值4':200} print(lst ...
- python导入txt文件并绘图-Python实现读取txt文件中的数据并绘制出图形操作示例
本文实例讲述了Python实现读取txt文件中的数据并绘制出图形操作.分享给大家供大家参考,具体如下: 下面的是某一文本文件中的数据. 6.1101,17.592 5.5277,9.1302 8.51 ...
- 访问其他程序中的数据(ContentResolver的CRUD操作)
内容提供器的用法一般有两种: 1.使用现有的内容提供器来读取和操作相应程序中的数据 2.创建自己的内容提供器给我们程序的数据提供外部访问接口. 如果一个应用程序通过内容提供器对其数据提供了外部访问接口 ...
- mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...
如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...
最新文章
- IT兄弟连 JavaWeb教程 jQuery中其他AJAX支持的函数
- 浅谈前端安全问题及策略
- ElasticSearch 索引基本操作_04
- PDF控件Aspose.Pdf 18年新版18.1发布 | 附下载
- MIUI ROM for Milestone 刷机教程
- 新人学习opencv图像处理的笔记,一:c++操作图像放大
- 一篇文章带你了解网页框架——Vue简单入门
- 读后感—肿瘤基因检测行业会好吗
- JavaScript:用JS函数隐藏浏览器地址栏 .
- 太阳直射点纬度计算公式_高中地理——每日精讲1题(地震、太阳高度角、极昼、昼夜长短)...
- 【THREE源码解析篇】THREE.Sprite详解
- Android组件化架构实践,全套教学资料
- 如何解决:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
- 基于linux上搭建红楼梦知识图谱---后续
- 百度智能云开物凭什么在“双跨”新增名单中排名榜首?
- linux下查找java进程占用CPU过高原因
- 我的世界服务器区块修复,MC新人解决区块错误问题教程详解
- 2018北大cls夏令营经历
- STC-ISP的定时器计算器初值计算
- 变压器的试验原理及方法
热门文章
- javascript 进度条的几种方法
- 【转】浏览器缓存机制
- NodeJS无所不能:细数10个令人惊讶的NodeJS开源项目
- 纹理窗口Qt+OpenGL之纹理贴图
- 如何weak link一个framework (高版本兼容低版本)
- silverlight动态添加xaml物件
- es 根据_id查询_京东把 Elasticsearch 用得真牛逼!日均5亿订单查询完美解决
- linux的mysql如何删除用户_linux mysql增加用户,删除用户,以及用户权限
- html ios按钮,ios样式开关按钮jQuery插件
- centos7 访问php页面显示源码_运维干货分享:centos7下源码编译安装php-7.1.5(脚本)...