oracle 视图的介绍和使用

本文详细解释了数据库中表和视图的区别,包括视图的安全性和便利性特点,并通过实例展示了视图的创建、使用及权限设置过程。
表和视图的区别,表是占用硬盘空间物理表,而视图可以理解为一个虚表,并不存储在硬盘上,不占用硬盘空间,实际上就是一个查询语句,方便查询。


对视图里面的数据操作(增 删 改) 其实就是对真实的表 增 删 改, 它们始终保持一致性。


哪为什么还需要视图 ?


视图可以理解成一个封装过的表, 例如不让用户 清楚知道表的某些字段信息,比较安全。


===========


下面进行操作 演示




CREATE TABLE xue_sheng( id integer, xing_ming varchar(25),xing_bie number, fen_shu number, b_id integer); 


INSERT INTO xue_sheng VALUES(1,'ZhanSan',1,80,1);


INSERT INTO xue_sheng VALUES(2,'LiSi',1,90,2);


INSERT INTO xue_sheng VALUES(3,'ZhanHong',0,75,2);


INSERT INTO xue_sheng VALUES(4,'ChenXiaoMing',1,85,1);


增加一个视图:
SQL> CREATE VIEW xs_view AS SELECT * FROM xue_sheng;
CREATE VIEW xs_view AS SELECT * FROM xue_sheng
            *
ERROR at line 1:
ORA-01031: insufficient privileges scott没有创建视图的权限


----------------------------------
SQL> conn /as sysdba
Connected.
SQL> grant connect,dba to scott;
Grant succeeded.


SQL> conn scott/tiger
Connected.


SQL> CREATE VIEW xs_view AS SELECT * FROM xue_sheng;
View created.


------------------------------


SELECT * FROM xs_view;


往视图插入数据
INSERT INTO xs_view(id,xing_ming) VALUES(5,'test');


SELECT * FROM xs_view;


SELECT * FROM xue_sheng;


操纵视图,其实是操作真实的表中


CREATE OR REPLACE 的使用 和 设置视图的权限 WITH READ ONLY 只读


修改原来的视图, 其实就是做一个替换


CREATE OR REPLACE VIEW xs_view AS SELECT * FROM xue_sheng WITH READ ONLY;


SQL> INSERT INTO xs_view(id,xing_ming) VALUES(6,'test2');
INSERT INTO xs_view(id,xing_ming) VALUES(6,'test2')
                    *
ERROR at line 1:
ORA-42399: cannot perform a DML operation on a read-only view


提示这是一个 read-only view 只读的视图


================================================================


CREATE OR REPLACE VIEW xs_view AS SELECT * FROM xue_sheng WHERE fen_shu >= 80;


SELECT * FROM xs_view;


这样使用视图比较方便。


--------------------------


CREATE TABLE ban_ji( id integer , ban_ji varchar(25));


INSERT INTO ban_ji VALUES(1,'1-(1)');


INSERT INTO ban_ji VALUES(2,'1-(2)');


INSERT INTO ban_ji VALUES(3,'1-(3)');


SELECT x.id, xing_ming,ban_ji FROM xue_sheng x JOIN ban_ji b ON x.b_id=b.id;


建立一个简单的视图, 取代复杂的查询语句
CREATE OR REPLACE VIEW xs_view AS SELECT x.id, xing_ming,ban_ji FROM xue_sheng x JOIN ban_ji b ON x.b_id=b.id;


SELECT * FROM xs_view;


显示视图的字段和数据类型
DESC xs_view;


视图的内容其实不多, 比较要注意的话,就是开始创建视图,要有创建的权限。结束了,请关注我的技术博客: 88
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值