视图是从一个或多个表(或视图)导出的表,例如,对于一个学校,其学生的状况存于数据库的一个或多个学生表中,而做为学校的不一样职能部门,所关心的学生数据的内容不一样(如体育老师只能查看或添加体育课的分数)。及时是一样的数据,有可能有不一样的操做要求,因而就能够根据他们的不一样需求,在物理的数据库上定义他们对数据库所要求的数据结构,这种根据用户观点所定义的数据结构就是视图数据库
通常咱们称表为基表,视图是一个虚表安全
视图一经定义,就能够像表同样被查询,修改,删除和更新数据结构
视图的优势:函数
1.为用户集中数据,简化用户的数据查询和处理。有时,用户所须要的数据分散在多个表中,定义视图能够将他们集中在一块儿,从而方便用户的数据查询和处理spa
2.屏蔽数据库的复杂性。用户没必要了解复杂的数据库中的表结构,并数据库表的更改也不影响用户对数据库的使用。3d
3.简化用户权限的管理。只需授予用户使用视图的权限,而没必要指定用户只能使用表的特定列,同时也增长了安全性。blog
4.便于数据共享。各个用户对于本身所需的数据没必要都进行定义和存储,可共享数据库的数据,这样一样的数据只需存储一次it
5.能够从新组织数据,以便输出到其余应用程序中。io
建立视图:select
界面建立视图:在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语句能够经过视图删除基本表的数据。
在界面上视图也能够进行更新,删除,插入和修改