视图 view = > 假表 ,用查询结果动态生成的一张表。
视图是编译后将查询语言(查询数据的语句)保存到数据库中,下次调用视图,可以不用再次编译,直接获取数据。
创建视图:
CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name
AS
SELECT查询
[WITH READ ONLY CONSTRAINT]
语法解析:
1. OR REPLACE:如果视图已经存在,则替换旧视图。
2. FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。
3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。
4. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作,复杂的视图无法执行insert因为多条数据相关联不能随意更改。
视图的优点:
1.可以限制用户只能通过视图检索数据,屏蔽建表时底层的基表。
2.节省编译时间,节约查询效率,创建视图的时候将查询语句编译后保存到数据库中,下次执行时,直接在数据库中调用编译好的语句。
3.从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。
重新编译视图:
当表名、列名、列类型等底层表的信息发生改变的时候,就会使得视图无法使用,其时就需要对视图进行重新的编译。
语法:
ALTER VIEW view_name COMPILE;
注意:如果视图的结构被改变了(如底层表的列被删除了),则上面的这种方法无法对视图重新编译成功。为此,现在只能把视图删掉,然后重新建立视图。