猪莫慌

数据库视图详解

一:视图

  视图也被称为虚表,即虚拟的表,是一组数据的逻辑表示,其本质是对应一条select语句,结果集被赋予一个名字,即视图的名字。

  视图本身并不包含任何数据,只包含映射到基表的一个查询语句,当基表数据发生变化时,视图数据也会随之变化。

二:创建视图的方法

  create [or replace] view view_name [alias] as subquery;

  视图创建后可以像操作基表一样操作视图,语法中的subquery是select查询语句,对应的表被称作基表。

三:视图的种类

  根据视图所对应的子查询分为:

  简单视图:基于单表查询,且不包含任何函数运算,表达式或分组函数;

  复杂试图:基于单表查询,包含函数运算、表达式或分组函数;

  连接视图:基于多表查询;

四:视图的作用

  1:简化复杂视图。

  2:限制数据访问,对基表中的其他列起到限制和保护作用。

五:授权创建视图

  创建视图的DDL语句为create view,用户必须有create view系统权限,才能创建视图,若没有权限,创建视图会提示:权限不足。

  管理员可通过DCL语句授予用户创建视图的权限,语句为:grant create view to tarena;

六:对视图进行dml操作

  视图不包含任何数据,只是对基表数据的逻辑映射。所以,当对视图进行dml操作时,实际上是对基表数据的dml操作,对视图进行dml操作的原则是:

  1:简单视图能够进行dml操作,下列情况除外:在基表中定义了非空列,但是简单视图对应的select语句没有包含这个非空列,导致这个非空列对视图不可见,

  这时无法对视图进行insert操作。

  2:若视图包含了函数、表达式、分组语句,distinct关键字和rowunm伪劣,不允许执行dml操作。

  3:dml操作不能违反基表的约束条件。

七:查询视图

  查询视图和查询表的操作一样,此时视图的列名和创建视图时的列名一致。

  select * from 视图名。

八:创建具有check option约束的视图

  语法如下:

  create [or replace] view ciew_name [alias]

  as subquery

  with check option;

  其中with check option短语表示,通过视图所作的dml操作,必须在视图可见范围内;

  增:新增记录在视图仍可查看到;

  删:删除的记录仅限于当下视图能查到的记录;

  改:修改后的结果必须能通过视图查看到;

九:创建具有read onely约束的视图

  语法如下:

  create [or replace] view ciew_name [alias]

  as subquery

  with read onely;

  此时对视图进行dml操作将会报错。

十:创建复杂视图

  a:创建复杂视图必须为视图中的函数或者表达式定义别名;
     b:复杂视图不允许dml操作,不然会报错;
     c:删除视图drop view view_name,对视图的删除不会影响基表数据。

  

posted on 2019-08-14 16:54  猪莫慌  阅读(1367)  评论(0编辑  收藏  举报

导航