小白终是踏上了这条不归路----小文的mysql学习笔记(19)-----视图----视图的创建、修改、删除、查看与更新
小白终是踏上了这条不归路----小文的mysql学习笔记(19)-----视图----视图的创建、修改、删除、查看与更新
**
小白终是踏上了这条不归路----小文的mysql学习笔记(1)
小白终是踏上了这条不归路----小文的mysql学习笔记(2)----条件查询
小白终是踏上了这条不归路----小文的mysql学习笔记(3)----排序询查
小白终是踏上了这条不归路----小文的mysql学习笔记(4)----常见的基本函数
小白终是踏上了这条不归路----小文的mysql学习笔记(5)----分组查询 … ** ,并且是在使用视图时动态生成的,而且它只会保存sq|逻辑,不能保存查询结果。
优点: 1、简单 : -用户不需关心视图中的数据是如何查询获得的; 简化了复杂的sql操作,不用知道它的查询细节 3、数据独立: 旦视图结构确定,可以屏蔽表结构对用户的影响
应用场景: 一 该查询结果使用的sql语句较为复杂时可以用到
一、创建视图
语法: create view 视图名称 sql查询语句 ;
那么下面我们来简单的举一个例子:创建一个视图里面包括员工的名字,工资,以及所在的部门名 这样当我们想要查看这些信息时就可以直接查看视图: 如果当我们想要查询该表中的一些信息的时候我们也是可以添加筛选条件并且直接使用该视图的。
那么这里我们来做一个案例:查询平均工资最低的部门信息和工资
首先我们可以做一个视图来包括各部门的平均工资 然后将st2视图进行工资顺序并且截取第一个(即工资最低的一行)生成视图st3: 然后我们就可以将st3视图和我们的departments表连接起来查询出我们想要的数据
二、视图的修改
视图修改一共有两种方式,那么下面我们来分别看一下
方式一,
语法: create or replace view 视图名 sql查询语句
解释:相当于就是,如果该视图存在那么就是修改该视图,如果该视图不存在,那么就是创建该视图
举个栗子:上面我们不是以及创建了一个sta视图嘛,该视图的数据是员工名以及工资和所在的部门名,那么我们要把该视图改为只有员工名和工资
方式二
语法: alter view 视图名 sql查询语句
举例:我们同样改上面的sta视图,将起改为所有的departments表中的所有信息
三、删除视图
语法: drop view 视图名,视图名,…
注意:你必须要有删除权限才能够执行删除,当然该删除语句既可以只删除一个视图,也可以同时删除多个视图
例子:将我们上面创建的几个视图全部删除 因为我们登录的是root是拥有所有权限的,所以视图就被删除了。
四、查看视图
这里查看视图有两种方式
方式一:
desc 视图名;
上面我们已经全部删除了所以在举例前我们先来创建一个视图sta 举例: 方式二:
SHOW CREATE VIEW 视图名;
五、视图的更新
虽然视图是一张虚拟表,并且不会在数据库中以存储的数据形式存在,但是当我们更新视图的数据时,基表的数据也会被更新;反之,当我们更改基表的数据时,当然视图的数据也会被更新。
所以注意 :
如果要给别人看视图的话,一般要设置一下权限只能看和使用不能更新,不然我们基表的数据容易被人篡改
当然视图的更新语法就和我们前面表的更新一样(增、删、改)
那么下面我们来简单的做一个例子来解释:首先小文在books库里建了一个视图st1,里面是作家的名字和国籍 然后我们来挨个演示一下 (2)修改 可以看出修改也是可以的, 将国籍为俄国的作家删除 当然这也是成立的,
但是
并不是所有的视图都是可更新的,视图是否可更新和视图查询的定义有关系,以下类型的视图都是不可更新的: 聚合函数(SUM、 MIN、MAX、COUNT等)、 DISTINCT、 GROUP BY、HAVING、UNION或UNION ALL 3、select中包含子查询 5、 FROM一个不能更新的视图 7、使用了临时表
----希望自己让所有靠近我的人都温暖的光。