数据库视图

视图是从一个或多个表(或视图)导出的表,例如,对于一个学校,其学生的情况存于数据库的一个或多个学生表中,而作为学校的不同职能部门,所关心的学生数据的内容不同(如体育老师只能查看或添加体育课的分数)。及时是同样的数据,有可能有不同的操作要求,于是就可以根据他们的不同需求,在物理的数据库上定义他们对数据库所要求的数据结构,这种根据用户观点所定义的数据结构就是视图

一般我们称表为基表,视图是一个虚表

视图一经定义,就可以像表一样被查询,修改,删除和更新

视图的优点:

1.为用户集中数据,简化用户的数据查询和处理。有时,用户所需要的数据分散在多个表中,定义视图可以将他们集中在一起,从而方便用户的数据查询和处理

2.屏蔽数据库的复杂性。用户不必了解复杂的数据库中的表结构,并数据库表的更改也不影响用户对数据库的使用。

3.简化用户权限的管理。只需授予用户使用视图的权限,而不必指定用户只能使用表的特定列,同时也增加了安全性。

4.便于数据共享。各个用户对于自己所需的数据不必都进行定义和存储,可共享数据库的数据,这样同样的数据只需存储一次

5.可以重新组织数据,以便输出到其他应用程序中。

创建视图:

界面创建视图:在SQL Developer中创建视图

命令创建视图

语法格式:create [or replace] [force | noforce]  [<用户名方案名>.]  视图名称

                  [<列名...>]

                 as

                 <selcet 查询语句>

               [with check option[constraint<约束名>]]

               [with read only]  

                   

说明:

1.or replace:表示在创建视图时,如果已经存在同名的视图,则要重新创建,不然把已存在的视图删除后才能创建

2.force:表示强制创建一个视图,无论视图的基表是否存在或拥有者是否有权限,但创建视图的语句必须是正确的。noforce则相反

3.用户名:指定将创建的视图所属用户方案,默认为当前登入账号

4.列名:可以定义视图中包含的列,若使用与源表或视图中相同的列名是,则必给出列名

5.select查询语句:查询所有表或视图,以表明新创建的视图所参照的表或视图

6.with check option:指定限制条件

7.constraint:约束名称

8.with read only:规定视图不能执行删除,插入,更改操作,只能检索数据

更新视图

要通过视图更新基表数据,必须保证视图是可更新视图。一个可更新视图满足以下条件:

(1) 没有使用连接函数、集合运算函数和组函数;

(2) 创建视图的SELECT语句中没有聚合函数且没有GROUP BY、ONNECT BY、START WITH子句及DISTINCT关键字;

(3) 创建视图的SELECT语句中不包含从基表列通过计算所得的列;

(4) 创建视图没有包含只读属性。

 插入数据

使用INSERT语句通过视图向基本表插入数据

修改数据

使用UPDATE语句可以通过视图修改基本表的数据。

删除数据

使用DELETE语句可以通过视图删除基本表的数据。

在界面上视图也可以进行更新,删除,插入和修改

原文地址:https://www.cnblogs.com/zhangpichun-7/p/13160332.html