小白终是踏上了这条不归路----小文的mysql学习笔记(19)-----视图----视图的创建、修改、删除、查看与更新

**
小白终是踏上了这条不归路----小文的mysql学习笔记(1)

小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询

小白终是踏上了这条不归路----小文的mysql学习笔记(3)----排序询查

小白终是踏上了这条不归路----小文的mysql学习笔记(4)----常见的基本函数

小白终是踏上了这条不归路----小文的mysql学习笔记(5)----分组查询


小白终是踏上了这条不归路----小文的mysql学习笔记(目录)
**
含义: 视图是一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表
,并且是在使用视图时动态生成的,而且它只会保存sq|逻辑,不能保存查询结果。

优点: 1、简单 : -用户不需关心视图中的数据是如何查询获得的;
                               并且视图中的数据已经是过滤好了的符合条件的结果集。
                                简化了复杂的sql操作,不用知道它的查询细节
            2、安全:   用户只能看到视图中的数据
            3、数据独立: 旦视图结构确定,可以屏蔽表结构对用户的影响

应用场景:
一 当多个地方都要用到同样的查询结果时可以用到;
一 该查询结果使用的sql语句较为复杂时可以用到

一、创建视图

语法: create view 视图名称
             AS
            sql查询语句 ;

那么下面我们来简单的举一个例子:创建一个视图里面包括员工的名字,工资,以及所在的部门名
在这里插入图片描述
这样当我们想要查看这些信息时就可以直接查看视图:
在这里插入图片描述
如果当我们想要查询该表中的一些信息的时候我们也是可以添加筛选条件并且直接使用该视图的。

那么这里我们来做一个案例:查询平均工资最低的部门信息和工资

首先我们可以做一个视图来包括各部门的平均工资
在这里插入图片描述
然后将st2视图进行工资顺序并且截取第一个(即工资最低的一行)生成视图st3:
在这里插入图片描述
然后我们就可以将st3视图和我们的departments表连接起来查询出我们想要的数据
在这里插入图片描述

二、视图的修改

视图修改一共有两种方式,那么下面我们来分别看一下

方式一,

语法: create or replace view 视图名
            AS
           sql查询语句

解释:相当于就是,如果该视图存在那么就是修改该视图,如果该视图不存在,那么就是创建该视图

举个栗子:上面我们不是以及创建了一个sta视图嘛,该视图的数据是员工名以及工资和所在的部门名,那么我们要把该视图改为只有员工名和工资
在这里插入图片描述

方式二

语法: alter view 视图名
            AS
            sql查询语句

举例:我们同样改上面的sta视图,将起改为所有的departments表中的所有信息
在这里插入图片描述

三、删除视图

语法: drop view 视图名,视图名,…

注意:你必须要有删除权限才能够执行删除,当然该删除语句既可以只删除一个视图,也可以同时删除多个视图

例子:将我们上面创建的几个视图全部删除
在这里插入图片描述
因为我们登录的是root是拥有所有权限的,所以视图就被删除了。

四、查看视图

这里查看视图有两种方式
方式一:

         desc 视图名;

上面我们已经全部删除了所以在举例前我们先来创建一个视图sta
在这里插入图片描述
举例:
在这里插入图片描述
方式二:

        SHOW  CREATE  VIEW  视图名;

在这里插入图片描述
不过一般用图形化工具的话,我们不用这种方式,查看不全,该种方式我们最好用cmd命令提示符打开
在这里插入图片描述

五、视图的更新

        虽然视图是一张虚拟表,并且不会在数据库中以存储的数据形式存在,但是当我们更新视图的数据时,基表的数据也会被更新;反之,当我们更改基表的数据时,当然视图的数据也会被更新。

所以注意 :

如果要给别人看视图的话,一般要设置一下权限只能看和使用不能更新,不然我们基表的数据容易被人篡改

当然视图的更新语法就和我们前面表的更新一样(增、删、改)

那么下面我们来简单的做一个例子来解释:首先小文在books库里建了一个视图st1,里面是作家的名字和国籍
在这里插入图片描述
然后我们来挨个演示一下
(1)插入
在这里插入图片描述
我们的视图是已经更新了多了一条数据那么我们的基表呢?我们来查一下
在这里插入图片描述
毋庸置疑,基表的数据随视图的数据更新而也被更新了。
(2)修改
在这里插入图片描述
可以看出修改也是可以的,
(3)删除
将国籍为俄国的作家删除
在这里插入图片描述
当然这也是成立的,

但是

并不是所有的视图都是可更新的,视图是否可更新和视图查询的定义有关系,以下类型的视图都是不可更新的:
1、包含以下关键字的SQL语句:
聚合函数(SUM、 MIN、MAX、COUNT等)、 DISTINCT、 GROUP BY、HAVING、UNION或UNION ALL
2、常量视图
3、select中包含子查询
4、JOIN(即连接查询)
5、 FROM一个不能更新的视图
6、WHERE子句的子查询引用了FROM子句中的表
7、使用了临时表

**
         我个人感觉这个视图和我们js中的那个函数很像,都是将一段代码封装在一个东西里面,然后下次当我们想要使用的时候就可以拿出来调用,有很强的复用性。
**
       want to live as a beam of light to keep the people close to me warm.
                                                          ----希望自己让所有靠近我的人都温暖的光。

猜你喜欢

转载自blog.csdn.net/qq_45948983/article/details/105775359