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