Oracle:视图

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;

猜你喜欢

转载自blog.csdn.net/weixin_41113108/article/details/80329712