**

因为本人之前一直写的是电子笔记,对自己学会的东西作一个总结,所以基本都是文字,本来想全发成博客的形式,发现全发成博客比较花费时间,而且一直发博客质量不是很好,而且通过发博客学到的东西也会变少,所以准备先把笔记发出来,后续再将它们改成博客的形式,争取2天至少改一篇博客,觉得我总结的还行的可以先关注我,后续会发成博客形式,内容也会更加完善

**

视图:
视图其实就是一张临时表,这张表是不占用任何存储空间的,所以视图是非常常用的一种形式,那么这张临时表为什么不占用存储空间,并且是怎么创建的,其实也很简单,想想之前我们是怎么使用临时表的,先用select语句在一张表中进行查询,然后并不查询这张表的所有字段,只是查询某些字段,然后我们还可以通过where语句进行筛选,然后得到一张新表,虽然它只是我们从一张表或几张表通过select语句筛选出来的,并不真实存在的一张表,所以这张筛选出来的表是不占用存储空间的(只是把它显示出来了),所以我们可以发现通过select语句可以新建一个临时表,但问题是这张表并不是真实存在的,当我们还想使用这张表时,又得使用select语句调用,所以这个select语句,就相当于一个临时表
所以视图其实就是对一个select语句的封装,也就是将一个select语句封装成了另一种简单的形式,就像定义宏一样,因为一个select语句太长,所以把它定义成一个简单的宏,只要我们调用宏,mysql就知道要使用这个语句,因为select出来的表和真实我们建的表确实有区别,所以把用select语句建立的表称为视图
所以视图是不占用任何存储空间的,只是使用了一遍select语句,也就是存储了一个select语句,这样的好处是,可以简化复杂的select语句,如果还要对这个select语句进行更复杂的操作,那么就可以直接使用视图,先把一个select语句定义为一个视图,然后再进行其它操作,而且这种视图的定义是可以嵌套的(也就是说我可以通过select查询视图,再把查询结果定义一个视图),降低了我们的难度,视图可以无限制的定义(不占用存储空间),而且视图也必须有唯一的名字(这个也 很好理解,最起码要知道你要使用哪个select语句),然后视图是不可以添加索引的,因为它的原理是使用select语句,所以它不是一个真正的表,所以不可以添加索引(没办法添加索引),而且视图可以提高安全性,因为它只是展示自己查询的信息,也就是只展示自己想展示的信息;另外如果在定义视图的时候select语句中有order by(排序),那么再对视图进行排序,依然会使用之前select语句中的排序;还有要注意的是,修改视图中的数据,对原有的表是没有影响的,因为修改视图只是相当于,在原有select语句后面,再补充一句sql语句,但是修改基表(原有的表)对视图是有影响的,因为视图保存的是select语句,是对基表的查询;
创建视图的关键词是view,使用方法是“create view 视图名 as select 语句;”,例如我有如下一张表:
mysql中的视图功能详解
现在我要用这张stud数据表中的names字段和age字段创建一个名字为”first“的视图,可以这样写“create view first as select names, ID from stud;”
mysql中的视图功能详解
如果要删除视图可以使用“drop view”,使用方法是“drop view 视图名字”,例如我现在要删除刚才创建的视图,可以这样写“drop view first”

mysql中的视图功能详解

相关文章: