一,什么是视图
1.视图是一种数据库对象,是从一个或者多个数据表或视图中导出的虚表,视图所对应的数据并不真正地存储在视图中,而是存储在所引用的数据表中,视图的结构和数据是对数据表进行查询的结果。
2.根据创建视图时给定的条件,视图可以是一个数据表的一部分,也可以是多个基表的联合,它存储了要执行检索的查询语句的定义,以便在引用该视图时使用。
二,视图的优缺点
1,可屏蔽一些不想给人看到的字段,视图是有区别表的。我们查询表的时候是可以直接查询到所有的字段。但是视图不是,试图给你看到的时候创建视图的时候可以看到的字段。
2,可以简化sql语句。对于一些复杂的sql语句,每次写的时候会有一大堆。我们可以先创建一个视图,在查询视图。语句简洁。
3,数据安全(基于视图只有查看的权限)。视图是可以设计权限的,创建视图可以设置视图的权限。假如我们只设置查看的权限,那么我们没有办法基于视图操作基表。
4,效率会低于直接的sql语句(如果对性能有要求,我们可以用储存过程代替)
5,视图的数据跟基表的数据是共享的。(基表有新增数据,视图也会有新增数据)
三,语法
CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW 视图名称
AS 查询的sql语句
[WITH READ ONLY CONSTRAINT]
列子: create or replace view myview as select * from student with read only
语法解析:
1. OR REPLACE:如果视图已经存在,则替换旧视图。
2. FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。
3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。
4. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。
删除 drop view 视图名称,delete 视图名称 (删除视图的数据)
查询select * from 视图名称
四,注意点
我个人认为创建视图更多的是用于查询,所以创建的时候我一般都是指定只能用于查询,不能对基表操作。