更新视图
是指通过视图,来更新、插入、删除基本表中的数据
因为,视图是一个虚拟表,其中没有数据,所以,当通过视图更新数据时,其实,是在更新基本表中的数据,如果对视图中的数据进行增加,或者删除操作时,实际上是在对其基本表中的数据,进行增加或者删除操作
UPDATE语句
使用UPDATE语句更新视图
MySQL中,可以使用UPDATE语句,更新视图
更新view_stu视图中,chinese字段对应的数据值,将字段值改为100
UPDATE view_stu SET chinese=100;
首先,查看view_stu视图,student表中chinese字段的信息
可以看出,view_stu视图和student表中,chinese字段的信息
使用UPDATE语句,更新视图view_stu中的chinese字段值
可以看出,view_stu视图和student表中,chinese字段更新为100
同时,基本表student中的chinese字段,和基于基本表建立的view_stu2视图中的chin字段的值,都变为100
INSERT语句
使用INSERT语句更新视图
MySQL中,可以使用INSERT语句,向表中插入一条记录
使用INSERT语句,向student表中插入一条数据
其中,s_id字段的值为4,name字段的值为Lily,math字段的值为100,chinese字段的值为100
可以看出,已经向student表中,插入了id为4的记录
此时,查看基于student,建立的view_stu2视图中的信息
可以看出,在student表中插入数据之后
View_stu2视图中的数据,也随之改变
因此,当基本表中的数据发生变化之后,与基本表对应的视图也会一起改变
DELETE语句
使用DELETE语句更新视图
MySQL中,可以使用DELETE语句,删除视图中的部分记录
使用DELETE语句,在view_stu2视图中删除一条记录
DELETE FROM view_stu2 WHERE math=70;
可以看出,view_stu2视图中,删除了math=70的记录
此时,查看student表中的信息
可以看出,student表中math=70的记录,也被删除了
因为,视图中的删除操作,最终是通过删除基本表中的记录实现的
注意,虽然视图更新的方式有多种,但是,并不是所有情况下,都能执行视图的更新操作
当视图中包含如下内容时,视图的更新操作不能被执行
1、视图中包含,基本表中被定义为非空的列
2、在定义视图的SELECT语句后的字段列表中,使用了数学表达式
3、在定义视图的SELECT语句后的字段列表中,使用了聚合函数
4、在定义视图的SELECT语句中,使用了DISTINCT、UNION、TOP、GROUP BY或者HAVING子句