哪些视图中的数据不可以增删改操作_Oracle学习--视图、序列、权限、事务、约束...

7afdd1d26e7ce32781116a99c0e5759d.png

1.视图

视图(view)被称之为虚表,即在数据库中,属于一种不存在实体的表,也可说其给实体表加上了一层窗帘,只公开部分数据,一些较为私密的数据则不允许查看访问,这样的实体表,在视图中也称为物理表(基表)。所以视图是对基表的一种数据保护,值得注意的是,通过视图进行的增删改查,将会同样作用于基表中,因为我们作用的就是基表。

语法:

create or replace view 视图名 as
query

例子:

create or replace view v$empinfo
as
select e.empno,e.ename,e.job,e.mgr,e.hiredate,e.deptno
from emp e;

1.1使用视图

使用视图的方法与使用表时的操作一样。

-- 使用视图
select * from v$empinfo;

-- 删除视图
drop view v$empinfo;

修改视图中的数据:

-- 向视图添加数据
insert into v$empinfo(empno,ename,job,mgr,hiredate,deptno)
values(1090,'cai90','singer',7839,sysdate,30);

select * from emp e;

之前提到,通过视图去操作数据,将会对基表产生影响,所以,在进行增加数据时,未显示给视图的字段将会自动加null,如果该未显示的字段设置了无法添加null值时,那么我们将无法通过视图去增加数据,系统将会提示添加失败。

例子:

insert into v$empinfo(ename,job,mgr,hiredate,deptno)
values('cai100','singer',7839,sysdate,30);

50d3701cd3e2eaba0f7437e8714667c9.png

1.1.1只读视图

例子:

create or replace view v$empinfo as
select e.empno,e.ename,e.job,e.mgr,e.hiredate,e.deptno from emp e
with read only;
insert into v$empinfo(empno,ename,job,mgr,hiredate,deptno)
values(1110,'cai100','singer',7839,sysdate,30);

561b82498bda03acfe783dd937f09947.png

只读视图,顾名思义,我们只能进行查询操作,而无法进行增删改操作,这就意味着数据将得到完美的保护,操作者将无法对其作出任何破坏性操作。

1.2视图的应用

-- 平均薪水的等级最低的部门,它的部门名称是什么
select vt3.deptno, d.dname
  from (select *
          from v$AvgSalGrade VT2
         where VT2.grade = (select min(vt1.grade) from v$AvgSalGrade VT1)) VT3
  join dept d
    on vt3.deptno = d.deptno
              
-- 通过视图优化
create or replace view v$AvgSalGrade as
select vt0.deptno,vt0.avgsal,sg.grade
      from (select e.deptno,avg(e.sal) "AVGSAL"
              from emp e
              group by e.deptno) VT0 join salgrade sg on vt0.avgsal between sg.losal and sg.hisal
with read only

2.权限管理

在下载Oracle时,我们都知道,Scott需要进行解锁,这就是给予了开发者使用scott账户的权限。

alter user  scott  account  unlock;

此时scott如果对数据库进行DDL操作是没有权限的。把创建视图、创建表的权限分配给soctt

在赋予权限时,我们需要一个具有更高权限的账户来进行授权,那就是sysdba。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值