13.2.7 视图
13.2.7 视图
视图看上去非常像一个数据表,但它不是数据表,因为它并不能存储数据。视图只是一个或多个数据表中数据的逻辑显示。
使用视图的好处
使用视图有如下几个好处。
- 可以限制对数据的访问。
- 可以使复杂的查询变得简单。
- 提供了数据的独立性。
- 提供了对相同数据的不同显示。
创建视图
因为视图只是数据表中数据的逻辑显示——也就是一个查询结果,所以创建视图就是建立视图名和查询语句的关联。创建视图的语法如下:
1 | create of replace view 视图名 |
从上面的语法可以看出,创建、修改视图都可使用上面语法。上面语法的含义是,如果该视图不存在,则创建视图;如果指定视图名的视图已经存在,则使用新视图替换原有视图。后面的subquery
就是一个查询语句,这个查询可以非常复杂。
视图的本质
通过建立视图的语法规则不难看出,所谓视图的本质,其实就是一条被命名的SQL查询语句。
通常只查询视图
一旦建立了视图以后,使用该视图与使用数据表就没有什么区别了,但通常只是查询视图数据,不会修改视图里的数据,因为视图本身没有存储数据。
实例
如下SQL语句就创建了一个简单的视图:
1 | create or replace view view_test |
强制不允许修改视图的数据
通常不推荐直接改变视图的数据,因为视图并不存储数据,它只是相当于一条命名的查询语句而已。为了强制不允许改变视图的数据,MySQL
允许在创建视图时使用with check option
子句,使用该子句创建的视图不允许修改,如下所示:
1 | create or replace view view_test |
数据库区别
大部分数据库都采用with check option
来强制不允许修改视图的数据,但Oracle
采用with read only
来强制不允许修改视图的数据。
删除视图
删除视图使用如下语句:
1 | drop view 视图名 |
如下SQL语句删除了前面刚刚创建的视图:
1 | drop view view_test; |