我们接着上一讲继续啊,上一讲我们说了什么是视图,如何创建视图,如何删除视图,这一节我们来说一下如何修改、更新视图。
当然啊,说之前我先来说说这两个操作的区别,不要以为它们是一样的啊
修改视图,是修改视图的名称、以及SQL语句等内容
更新视图,是指通过视图去做insert、update、delete等操作,因为视图是一个虚表,其中并没有数据,我们这样去更新视图都是转换成对具体的表的操作的。当然啊,更新视图的时候,只能更新权限范围内的数据,超过这个范围就不能更新了。
修改视图
修改视图我们同样是通过命令,这里我给出来
CREATE OR REPLACE ( ALGORITHM =( UNDEFINED 或 MERGE 或 TEMPTABLE ))
VIEW 视图名 ( 属性清单 )
AS SELECT 语句
( WITH ( CASCADED 或 LOCAL ) CHECK OPTION );
其实和创建差不多,这个也能用来创建,因为是 CREATE OR REPLACE,然后我们现在来通过这个命令去创建一个视图。
然后我们来刷新一下视图
我们查看一下这个视图
OK的啊,然后我们再来修改一下这个视图,还是用这个命令,就是换一下这个SQL语句。
再来运行一下
OK的啊,接着我们再来使用另外一个修改命令
ALTER ( ALGORITHM =( UNDEFINED 或 MERGE 或 TEMPTABLE ))
VIEW 视图名 ( 属性清单 )
AS SELECT 语句
( WITH ( CASCADED 或 LOCAL ) CHECK OPTION );
实际上也就是把 CREATE OR REPLACE 修改成 ALTER了,我们再来修改一下 lemon234_1 这个视图
接着我们来查看一下新修改的这个视图
摩玛带啊(西安话),其实修改我们是常用的,然后我们来说这个更新视图。
更新视图
更新视图,我再文章最前面说了啊,这个到最后就是转换成对实体表的操作,所以我们来尝试一下。
首先先查看一下我们的 lemon1234_1的这个视图。
然后我们将张三的名字给他弄成李四。
这里需要注意,你要用视图里面的名字啊,别弄成name啊,千万要记住!!!
然后我们再来看一下视图。
可以看到啊,我们将这个张三的名字修改成李四了,然后我们再来看看这个实际的表。
也是OK的啊,也被修改掉了。这就证实了我前面说的,实际上是对具体的表进行操作。
我们再来将李四的性别也修改一下,现在不是 1 吗,我们给他通过视图修改成 2 ,我们再来试一下。
可以看到啊,报错了,原因是找不到这个sex,这也就是说明了限制,虽然实际的表中存在,但是我们没有办法去修改,因为视图中不存在。
当然啊,我们再来试试这个插入和删除,先来说插入,直接上图。
我们当时弄这个 t_student 表的时候啊,我们的这个id主键是自动递增的,但是到了这个视图,发现这个用不了了,报错了,这也就是说,表是表,视图是视图。所以我们给定一个id,我们再来添加。
查看一下
当然啦,其他的字段肯定是空,道理和这个UPDATE的时候是一样的,视图中不存在,所以没有办法添加。
然后是删除,我们再将陈胖这条数据删除了。
再来查看一下视图和表
很好啊,大家多多练习一下,先讲到这里,明天开始弄触发器。