当前位置: 首页 > news >正文

MySQL—视图

前言:

视图是一个虚拟的表,是基于一个或多个基本表或其他视图的查询结果集。视图本身不占据物理储存空间,仅仅只是一个查询的逻辑表示,物理上依赖于数据表的数据。

视图具有简单,安全,逻辑数据独立,可读性等优点,在数据库领域广泛的使用。

现在给出四张表,来演示视图作用:

class表:

student表:

score成绩表:

course学科表:

使用视图

创建视图

语法:create VIEW 视图名 (指定列名)AS (  sql的查询语句  );

视图就是将sql查询出来的结果集做一个简单封装,能让其他程序员能够直接使用这个结果集。

一般的查询(查找学生各科的成绩,四表联合):

可以看到,这样的联合查询的语句有些复杂,别人再想使用时写的语句很麻烦,这时我们就可以创建视图来使用:

1.不指定结果集的列:

取好别名后,可以看到:

表中已包含有刚刚建立的视图存在,我们可以查看视图:

这样使用起来代码就不会复杂了。

2.指定结果集的列:

指定的结果集列就不用另起别名了.

3.视图的结构查询:

语法:show create view 视图名;

视图还可以和真实表进行表连接查询。

修改数据

语法:update 表名/视图名 set 修改字段 where 条件;

1.通过真实表修改数据会影响到视图

如修改刘峰的名字为刘某某:

再查看视图:

发现视图的名字也被修改了,说明了基本表的修改会影响视图这个结果集的数据,视图是实时更新的。

2.通过视图修改数据会影响到基本表

如修改刘某某重新变为刘峰:

但是发现了点小问题:

我们重新创建个视图,再修改:

再查看基本表:

总结:

基本表和视图修改时都会互相影响,因为视图本质上是一个虚拟表,不存储任何数据,基于原表的数据。而且视图的数据是动态生成的,视图只提供了一个查看和操作原始数据的接口,也可以用来限制用户对数据的访问。

注意事项:

以下的视图不可以进行更新操作:

1:创建视图时使用group by 或者having 来分组

2:创建视图时使用聚合查询的视图

3:创建视图时使用union 或 union all

4:创建视图时使用distinct

5:查询列表中使用子查询

删除视图

语法:drop view 视图名;

http://www.lryc.cn/news/459521.html

相关文章:

  • 鸿蒙OS启动流程
  • 服务器数据恢复—EMC存储RAID5磁盘阵列数据恢复案例
  • 使用 `netcat`(nc)工具进行TCP数据发送和接收
  • Linux虚拟化技术嬗变综述
  • .NET 通过C#设置Excel工作表的页面设置
  • Excel日期导入数据库变为数字怎么办
  • SSL---SSL certificate problem
  • linux tar 打包文件去掉文件所在路径
  • MQ快速入门【详细】个人笔记 讲解通俗易懂
  • react实现实时计时的最简方式
  • 时尚的社会心理机制:求同和树异这对互为矛盾的心理动机,使得人们在社会生活中互相模仿、互相追逐、互相竞争,使得时尚的钟摆永不停息。
  • HarmonyOS NEXT应用开发实战(二、封装比UniApp和小程序更简单好用的网络库)
  • [Hbase]一 HBase基础
  • React.createRef(),React.forwardRef(),forwardRef()结合next.js的link进行路由跳转
  • C++从入门到起飞之——AVL树 全方位剖析!
  • 利用Fail2Ban增强Jupyter Notebook安全性以防范目录遍历攻击
  • 智能贴身监测,健康生活建议,圆道妙医智能手表体验
  • C++——AVL树
  • 极市平台 | 无人机相关开源数据集资源汇总
  • React和Vue区别,以及注意事项
  • 光伏项目难管理的问题如何解决?
  • 图片美化SDK解决方案,赋能H5与小程序极致体验
  • Kron Reduction消去法如何操作,矩阵推导过程
  • 实时开放词汇目标检测(论文复现)
  • 陪诊小程序搭建:打造便利的陪诊环境
  • Qt5.15.2静态编译 MinGW with static OpenSSL
  • Linux Ubuntu dbus CAPI ---- #include<dbus.h>出现“无法打开源文件dbus/xxx.h“的问题
  • React01 开发环境搭建
  • 数据结构之旅(顺序表)
  • 掌握 C# 内存管理与垃圾回收机制