Oracle 其他对象--视图

视图简介:

视图是从一个或多个实体表(或视图)导出的表。数据库中只存放视图的定义,而不存放视图对应的数据。所以当实体表数据发生该表,视图的数据也会发生改变。


*语法:

create [ force | noforce ] [ or replace ] view 视图名称 [ (列别名1,列别名2) ] as 子查询

参数:

force:表示创建视图的表不存在也可创建视图

no force:(默认)创建视图的表存在才能创建视图

or replace:如果视图不存在则创建一个视图,若存在则替换

#例子:

create view v_myview as select * from emp where sal >2000;

注意:

在Oracle 10g R2之后,默认情况下,scott 用户没有创建视图的权限。如何解决:先用管理员身份登录,授权:

1、按control+R,输入:"sqlplus/nolog"

2、切换用户,输入:"conn sys/change_on_install as sysdba ;"

3、授权,输入:"grant create view to c##Scott;"


数据库的视图字典:user_views

select * from user_views 可以查看这个数据库所有哦视图信息。


在视图中增加数据:

insert into v_myview (empno,ename,job,sal,deptno) values (8888,'Miki','clerk',2001,20);

在视图中修改数据:

update v_myview set ename='miki' ,job ='manager',sal=2300 where empno=8888;

在视图中删除数据:

delete from v_myview where empno=8888;

注意:

1、只有在简单视图语句,关联一张表的视图是可以执行insert、update、delete语句,复杂视图语句是不能执行insert、update语句, 可以执行delete语句,但他会把第一张实体表数据删除,其他实体表不做处理。

2、视图增加数据和实体表中增加数据语法是一样的,但视图增加数据实际上是在对应的实体表中增加数据,而某列没有增加数据的则为null,如果表有不为空约束则会报错。

3、视图操作只建议用作查询,不建议做其他操作。因为视图本身不是真实数据,属于映射数据,修改数据应该在基表中操作。


with check option 子句:限制创建视图where子句关键字段不被修改。

*语法:子查询后面加 [ with check option [constraint 约束名] ]

#列子:

create or replace view v_emp20 as select * from emp where deptno =20 with check option constraint v_emp20_ck;

注意:这个只能限制deptno这个字段不被修改,如执行"update v_emp20 set deptno =30 where empno=6688"会被报错。但其他字段依然可以被修改,如:"update  v_emp20 set ename='miki' ,sal=200 where empno=6688"则可以被修改。


with read only 子句:限制视图所有字段不可修改,设置为只读视图。

*语法:子查询后面加 [with read only 子句]

#例子:

create or replace view v_empno20 as select * from emp where deptno=20 with read only ;


删除视图:

*语法:

drop view 视图名称

----------------------------------------------------------如有不足还请各位指正---------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值