Oracle---视图

 视图:其实是一个虚表,对应一个select语句.

    1.视图其实是表中数据映射(投影)
             视图关键字view,对应的select语句中的表叫基表
     2:作用:
               1)可以保护表中其他数据
               2)当频繁的操作一个语句时,将这个查询语句创建成视图,便于操作
     3:视图的分类
       (1)简单视图
          对应的select语句是一个普通的语句,没有聚合函数,其他函数,以及子查询
       (2)复杂视图:
          select语句中含有函数、排序、子查询的视图
       (3)连接视图
          select语句中涉及到多张表

      4:视图的创建:

          create [or replace] view view_name as subQuery '语句';子查询
          练习:创建视图 v_emp_10 对应的是10号部门员工信息
          create or replace  view v_emp_10 as  select * from emp where deptno=10 ;
          desc view_name
          
       5:视图的创建:
          有些用户没有创建视图的权限,必须授权
          使用DBA进行授权
          ***1)先进入system 1234 数据库 ,2)再输入授权语句
          授权语句: grant create view to 用户名(scott)
                           grant create view to v_emp_10
     
       6:视图也可以进行DML操作 *增删改
          原则1:视图中没有的字段,基表中的字段有非空操作,此时不能进行insert
          原则2:复杂视图不能进行DML操作
          原则3:连接视图不能进行DML操作
          
          1)查询基表: 向视图插入数据,基表也会有数据!
           select * from emp where deptno=10
           select * from  v_emp_10 
             再插入李四的数据, 向视图里。
           insert into v_emp_10 values( 9101,'李四','clerk',7369,'11-11月-16',3000,100,10);
           查询基表:视图与基表都会有数据
           select * from emp where deptno=10
            select * from v_emp_10  
         2)通过视图 v_emp_10 修改张三工资,基表和视图都改变
         练习:通过视图 v_emp_10 修改张三工资,基表和视图都改变
          update  v_emp_10  set sal=4000 where ename='张三'
          select * from emp
           select * from v_emp_10   
          练习:通过视图删除李四的信息
          delete from  v_emp_10 where ename='李四'
          select * from v_emp_10  李四已删除
          select * from emp where deptno=10 李四已删除
    总结:可以DML增删改视图中的任何数据,视图中没有的数据,可能insert,不能delete,update
          7:视图与with check option对视图做了限制
          当视图对应的select语句中使用了with check option时,就对视图做了限制,只能DML视图中的数据。
          练习:创建视图v_emp_20对应的20号部门的员工编号,姓名,职位,月薪,部门号
           create or replace view v_emp_20  as 
           select empno,ename,job,sal,deptno  from emp where deptno=20 with check option; 对20号进行了限定
          8:视图与with read only;
            练习:创建v_emp_30 视图,为30号部门的所有员工信息,设置为只读
            create view v_emp_30 as
            select * from emp where deptno=30 with read only;
        
           insert into v_emp_20 values(9102,'王五','superman',2000,20)//只能读,不能插入
          9.  复制表:

                create table copy-table as select * from emp



   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值