视图

先来说说啥是视图,我们继续百度百科

mysql删除视图的sql语句 mysql 删除视图_视图

通过阅读这一段话,我们可以知道,视图就是指的数据库中的一个虚拟表,也就是说真实情况下不存在的。而且这个表就只用来查看,增删改还去去具体表。再有就是后面的,视图并不在数据库中以存储的数据值集形式存在,而这句话正好证实了我前面一句,增删改还得去具体表,视图里面是不存着数据的。

视图的作用和好坏处

大概知道这么多,我们再来说一下这个东西有啥作用和好处。

作用其实就是为了展示的,好比现在有好多表一起联查,你可以图方便,直接定义一个视图,到时候直接查询视图就好了,不需要再去写繁琐的SQL了,一次定义一直用。

但是这个东西也有坏处,就好比现在要修改表,删除一个字段,那你也得相应的,把视图也得修改了,不然查不到东西,这个我们一般都是用到那种老常查询的一些SQL,而且这些表都是固定好的,不会频繁变动的,我们定义成视图,用来做查询。

创建视图

简单介绍完之后,我们来实际的操作一下,我们自己创建一个视图。先给出命令:

CREATE (ALGORITHM=(UNDEFINED 或 MERGE 或 TEMPTABLE))
VIEW 视图名字 (属性清单)
AS SELECT语句
( WITH ( CASCADED 或 LOCAL ) CHECK OPTION );

然后我再顺便解释一下,这个ALGORITHM这个东西是一个可选参数,表示视图选择的算法,默认是UNDEFIEND

UNDEFINED

这不是一种算法,是一种推卸责任的算法,告诉系统,视图没有定义算法,系统你自己看着办

MERGE

合并算法,系统在执行select语句之前,会对视图的select和外部查询视图的select语句进行合并,然后执行(效率高)

TEMPTABLE

临时表算法:先执行视图的select语句,然后在执行外部查询Select语句

我们呢,一般就不去管这个,都是系统默认,也就是undefiend

属性清单

这就是表中显示的字段名称,一会我们来实际操作一下

WITH (CASCADED 或 LOCAL) CHECK OPTION

这一串东西是啥呢?这个是决定了是否允许更新数据使纪录不再满足视图的条件。

local是只要满足本视图的条件就ok

cascade则是必须满足所有针对该表的所有视图的条件才ok

如果没有明确是local还是cascade,则默认是cascade

知道了这些之后我们先来创建一个单表的视图

创建单表视图

mysql删除视图的sql语句 mysql 删除视图_mysql删除视图的sql语句_02

简简单单的创建好了,我们双击一下看看这个视图

mysql删除视图的sql语句 mysql 删除视图_mysql删除视图的sql语句_03

这个就是我们的属性清单,我们设置的name和年龄,这里和大家说一下啊,尽量不要使用中文,符合一下规范,比较这东西不是中国人弄得。

单表的创建好,我们再来一个多表的,这里呢,我就不弄那么多的参数了,因为这些个参数一般来说我们是用不到的,了解即可。

创建多表视图

mysql删除视图的sql语句 mysql 删除视图_mysql删除视图的sql语句_04

其实也就是SQL语句变得复杂了,其他的没有啥改变,我们再来看一下这个lemon1234_2的视图

mysql删除视图的sql语句 mysql 删除视图_创建视图_05

是不是,也是OK的

当然啊,视图不仅仅是这么玩的,更重要的是程序调用到时候怎么去调用,我们再来看一下如何去查看视图

查看视图

1. 查看视图的详细信息


DESCRIBE 或者 DESC 视图名称;

mysql删除视图的sql语句 mysql 删除视图_删除视图_06

这两个查询到的都是一样的,都是这个东西,我们可以看到这个视图里面有啥字段。

2. 查看视图的状态

SHOW TABLE STATUS LIKE 视图名称;

mysql删除视图的sql语句 mysql 删除视图_视图_07

后面的不截图了,大概就这样,这个我是感觉没有啥用,就是看看名字啊,创建时间啥的

3. 查看创建视图时候的信息

SHOW CREATE VIEW 视图名称;

mysql删除视图的sql语句 mysql 删除视图_删除视图_08

我们可以看到啊,这个里面存着我们创建视图时候的全命令,这个还是有点用的,这样我们如果忘记当时是怎么创建的,可以看这个。

删除视图

有添加就会有删除,这个内容比较简单,所以扔到这里来说,修改和更新我们放到下一讲。

删除视图,仅仅就是把视图删除掉了,真实的数据还是在原来的表中,不会删除的,下面我给出命令。

DROP VIEW [ IF EXISTS ] 视图名列表 [ RESTRICT | CASCADE ]

下面来操作一下,将我们上面创建的视图删除掉。

mysql删除视图的sql语句 mysql 删除视图_视图_09

 

OK,先到这里,明天来说视图的修改还有更新,大家好好练习一下。