1、什么是视图?
①视图是一种虚表。
②视图建立在已有表的基础上,视图赖以建立在这些表称为基表。
③向视图提供数据内容的语句为select语句,可以将视图理解为存储起来的select语句。
④视图没有存储真正的数据,真正的数据还是存储在基表中。
⑤程序员虽然操作的是视图,但最终视图还会转成操作基表。
⑥视图向用户提供基表数据的另一种表现形式。
⑦一个基表可以有0或者多个视图。
2、什么时候用到视图?
①让不同用户看到不同的数据,例如,不想让用户看到所有的数据,不想让某些用户看到某些数据时可以使用视图。
②需要简化sql语句的编写时。
3、视图的作用:
①限制数据的访问;
②简化复杂查询;
③提供数据的相互独立;
④同样的数据,可以有不同的显示方式。
注意:默认情况下,普通用户无权创建视图,需要超级管理员授权。
4、超级管理员向用户授予创建视图权:
格式:grant create view to 用户名;
5、超级管理员撤销用户的创建视图权:
格式:revoke create view to 用户名;
6、创建视图:
格式:create view 视图名
as
select对一张或多张表的查询
例1:基于emp表所有列,创建视图emp_view_1
create view emp_view_1
as
select * from emp;
例2:基于emp表指定列,创建视图emp_view_2,该视图包含编号、姓名、工资、年薪、年收入
create view emp_view_2
as
select empno “编号”,ename “姓名”,sal “工资”,sal * 12 “年薪”,sal * 12 + nvl(comm,0)
from emp;
7、注意:创建视图时,可以指定视图的列名,若不指定,以查询结果的列名为准:
例:基于emp表指定列,创建视图emp_view_2(a,b,c,d,e),该视图包含编号、姓名、工资、年薪、年收入
create view emp_view_2(a,b,c,d,e)
as
select empno “编号”,ename “姓名”,sal “工资”,sal * 12 “年薪”,sal * 12 + nvl(comm,0)
from emp;
8、修改表:
格式:create or replace view 视图名
as
子查询
注意:若删除视图中某条记录,会同时影响基表的数据;若删除整个视图,则不会影响基表的数据,同时删除了的视图也不会进 入回收站。
9、将视图设为只读视图:with read only
例:将emp_view_1设为只读视图
create or replace view emp_view_1
as
select * from emp
with read only;