MySQL(三)视图
视图:view,是一种有结构(有行有列)但是没有结果(结构中不真实的存放数据)的虚拟表,虚拟表的结构来源不是自己定义,而是从对应的基表中产生(视图的数据来源);
视图意义:
1、视图可以节省SQL语句:将一条复杂的查询语句使用视图保存,以后可以直接对视图进行操作。
2、数据安全:视图的操作是主要针对查询的,如果对视图结构进行删除处理,不会影响基表数据(相对安全)。
3、视图往往是在大项目中使用,而且是多系统使用。(想想现在的微信,有多少项目是基于微信开发的,但是微信不可能提供数据库基表的,但是可以给提供视图,因为视图在查询时候是可以提供自己想给的select语句的,比如:我提供没有查询学号的select语句,封装到视图里面。)
可以对外提供有用的数据,但是隐藏关键(无用)的数据。
4、视图可以对外提供友好型:不同的视图提供不同的数据,好像是对外专门设计的。(比如与其他公司合作,可以专门提供不同公司所需要的不同数据,用视图进行封装,这个与第三条有点类似。)
5、视图可以更好(更容易)的进行权限控制。
一、创建视图:
格式:
create view 视图名字 as select 语句;
查询语句可以是普通查询,连接查询,联合查询,子查询。
创建单表视图:基表只能有一个
创建多表视图:基表至少有两个
二、查看视图
查看视图:查看视图结构
视图是一张虚拟表:表的所有的查看方式都适用于视图:show tables [like] 视图名字;desc 视图名字; show create 视图名字;
视图比表还是有一个关键字的区别:view。查看“表(视图)”的创建语句的时候可以用view关键字
视图一旦创建:系统就会在视图对应的数据库文件夹下创建一个对应的结构文件:frm文件。
三、使用视图
视图主要是为了查询,将视图当做表一样查询就可以了。
视图的执行:其实本质就是执行封装的select语句。(可能有疑问,我们还不如去查询基表呢,但是有时候我们写select语句会很长,占一两页,这样我们就可以用视图,进行语句的复用,但是视图不仅仅只有这一个功能,它还有其他功能)
四、修改视图
视图本身是不可以修改的,但是视图的来源是可以修改的。
修改视图:修改视图本身的来源语句(select语句)
格式:
alter view 视图名字 as 新的select语句;
五、删除视图
格式:
drop view 视图名字(删除视图一般不用,一个复杂select语句是不容易写的,创建这样的视图后,如果该select语句没有保存,那么就玩完了。)
六、视图算法:系统对视图以及外部查询视图的select语句的一种解释方式
视图算法分为三种:
1、undefined:未定义(默认的),这不是一种实际使用的算法,是一种推卸责任的算法,告诉系统,视图没有定义算法,系统自己看着办。
2、temptable:临时表算法:系统应该先执行视图的select语句,后执行外部查询语句。
3、merge:合并算法:系统应该先将视图对应的select语句与外部查询视图的select语句进行合并,然后执行(效率高)
算法指定:在创建视图的时候
格式:
create algorithm = 指定算法 view 视图名字 as select 语句;
视图算法选择:如果视图的select语句中会包含一个查询子句,而且很有可能顺序比外部的查询语句要靠后,一定要使用算法temptable,其他情况可以不指定(默认就可以了)
视图对数据的操作:
视图是可以进行数据的操作,但是有很多的限制。将数据直接在视图上进行操作。
一、新增数据(如果给别人视图,一般是不会给他人操作基表权限的)
数据的新增,就是直接对视图进行数据的新增
1、多表视图不能进行新增
2、可以向单表视图插入数据:但是视图中包含的字段必须有基表中所有不能为空(或者没有默认值)的字段。
3、向基表中插入数据
二、删除数据
1、多表视图不可以删除(连接的视图)
2、单表视图的删除
三、更新数据
一、单表视图与多表视图都是可以修改成功的。
更新限制:with check option,如果对视图在新增的时候,限定了某个字段有限制,那么在对视图进行数据更新操作时候,系统会进行验证,要保证更新之后,数据依然可以被实体查询出来,否则不让更新。
MySQL(三)视图的更多相关文章
- MySQL(三)
MYSQL(三) 上一章给大家说的是数据库的视图,存储过程等等操作,这章主要讲索引,以及索引注意事项,如果想看前面的文章,url如下: MYSQL入门全套(第一部) MYSQL入门全套(第二部) 索引 ...
- mysql view(视图)
一,什么是视图 视图是存放数据的一个接口,也可以说是虚拟的表.这些数据可以是从一个或几个基本表(或视图)的数据.也可以是用户自已定义的数据.其实视图里面不存放数据的,数据还是放在基本表里面,基本表里面 ...
- 第五章 MySQL事务,视图,索引,备份和恢复
第五章 MySQL事务,视图,索引,备份和恢复 一.事务 1.什么是事务 事务是一种机制,一个操作序列,它包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求.要么都执行 ...
- MySQL之视图、触发器、事务、存储、函数、流程控制
一.视图 视图就是一个虚拟表,我们把复杂的sql语句后看到的虚拟表封装起来,给他取个名字,当我们下次使用的时候,就不用再去写复杂的sql语句,直接调用封装后的视图名字,就可以得到我们想要的表,然后就可 ...
- MySQL之视图、触发器、事务、存储过程、函数 流程控制
MySQL之视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部 ...
- 数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件
数据库MySQL之 视图.触发器.存储过程.函数.事务.数据库锁.数据库备份.事件 浏览目录 视图 触发器 存储过程 函数 事务 数据库锁 数据库备份 事件 一.视图 1.视图概念 视图是一个虚拟表, ...
- MySQL 的视图、触发器、事务、存储过程、函数
MySQL 的视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句 ...
- MySQL的视图和索引
MySQL的视图 简单来说MySQL的视图就是对SELECT 命令的定义的一个快捷键,我们查询时会用到非常复杂的SELECT语句,而这个语句我们以后还会经常用到,我们可以经这个语句生产视图.视图是一个 ...
- day 40 MySQL之视图、触发器、事务、存储过程、函数
MySQL之视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上 ...
- mysql第五篇 : MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁
第五篇 : MySQL 之 视图.触发器.存储过程.函数.事物与数据库锁 一.视图 视图是一个虚拟表(非真实存在的),其本质是‘根据SQL语句获取动态的数据集,并为其命名‘ ,用户使用时只需使用“名称 ...
随机推荐
- maven跳过测试打包
1.在执行run as时候加上参数: clean install compile -Dmaven.test.skip=true 2.在pom文件中添加如下: <plugins> < ...
- Python实用笔记 (17)模块
一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块. 现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲 ...
- 基于小程序请求接口 wx.request 封装的类 axios 请求
基于小程序请求接口 wx.request 封装的类 axios 请求 Introduction wx.request 的配置.axios 的调用方式 源码戳我 feature 支持 wx.reques ...
- 学习 Java 网站推荐给你
推荐几个非常不错的 Java 学习网站 LearnJava 在线 这是一个非常不错的学习 Java 的在线网站,纯免费.这是一个个人项目,旨在通过简单有效的在浏览器中进行练习让你快速掌握 Java 编 ...
- Guava RateLimiter限流器使用示例
Guava中的RateLimiter可以限制单进程中某个方法的速率,本文主要介绍如何使用,实现原理请参考文档:推荐:超详细的Guava RateLimiter限流原理解析和推荐:RateLimiter ...
- 如何修复 WordPress 中的 HTTP 错误
如何修复我们会向你介绍,如何在 Linux VPS 上修复 WordPress 中的 HTTP 错误. 下面列出了 WordPress 用户遇到的最常见的 HTTP 错误,我们的建议侧重于如何发现错误 ...
- Python | 面试必问,线程与进程的区别,Python中如何创建多线程?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是Python专题第20篇文章,我们来聊聊Python当中的多线程. 其实关于元类还有很多种用法,比如说如何在元类当中设置参数啦,以及一 ...
- Code Forces 796C Bank Hacking(贪心)
Code Forces 796C Bank Hacking 题目大意 给一棵树,有\(n\)个点,\(n-1\)条边,现在让你决策出一个点作为起点,去掉这个点,然后这个点连接的所有点权值+=1,然后再 ...
- UVA 11383 Golden Tiger Claw 题解
题目 --> 题解 其实就是一个KM的板子 KM算法在进行中, 需要满足两个点的顶标值之和大于等于两点之间的边权, 所以进行一次KM即可. KM之后, 顶标之和就是最小的.因为如果不是最小的,就 ...
- CF833A The Meaningless Game 题解
题目 Slastyona and her loyal dog Pushok are playing a meaningless game that is indeed very interesting ...