Linux怎么调oracle存储,Linux 环境下Oracle安装与调试(四)之视图、存储过程

1、视图的介绍和使用

表和视图的区别,表是占用硬盘空间物理表,而视图可以理解为一个虚表,并不存储在硬盘上,

不占用硬盘空间,实际上就是一个查询语句,方便查询。

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

哪为什么还需要视图 ?

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

===========

下面进行操作 演示

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 privilegesscott  没有创建视图的权限

更改用户为sysdba

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

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.

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

#对比表和视图,一模一样

357b0457d2651b8e653b7b0947211074.png

#插入一条数据可以发现,对视图增删改,就是对表增删改;

b3c3d12bea8e91a7a5cb218b6c664e7a.png

#设置视图权限

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

如果视图不存在,则创建视图;如果视图存在则替换视图;

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

修改视图为只读权限

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

fd8fd63d795a2a7ef82254a70ceea6d1.png

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

#创建一个带条件的视图

7416cacb6455cf5bc179b26862a84b7f.png

#再增加一个班级表

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)');

建立一个简单的视图, 取代复杂的查询语句,创建一个视图用于临时存放查询结果,而且以后需要对查询的结果反复操作;

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;

75a30184e0b84589b3b88b9171630d0f.png

2、存储过程

#定义

存储过程 - 执行一个任务,该任务包括了一系列的PL SQL语句,存储在数据库中,成为数据库一个对象。效率比较高的,但你创建一个存储过程它会进行一个判断编译的

#创建一个简单的存储过程,这个存储过程什么都不操作,NULL表示;

6283a4d4a1ff0c2faad111f9275c97ae.png

is:声明一些变量;

#执行存储过程;

6d67a5c3725dc916caa2e0de69c95f1c.png

以上2中方法执行存储过程,如果没有什么输出参数可以用第一种execute xs_proc;如果有输出参数,最好用第2中方法;

#存储过程显示信息

37bc18a5100fe8b4b81174b454332fdd.png

输出要设置为ON , 才会把 hello 显示出来

#存储过程实例

CREATE TABLE xue_sheng( id integer, xing_ming varchar(25), yu_wen number,shu_xue number);

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

INSERT INTO xue_sheng VALUES(2,'LiSi',85,87);

只带一个输入参数 ,把查询的结果显示出来

1f37fcc5b4b7f9006ba87174f364c2e9.png

当输入学生的名字, 就会把他的总分(语文+数学)显示出来。

c0e19f66aefe795e64cfb88325fbd472.png

#输入参数 和 输出参数一起使用

3d717eebeb8633ada5324b6c0ea66000.png

8dac64dea506785099ab9cbb2ff9f62d.png

#维护存储过程

1、查看过程状态

SELECT object_name,status FROM USER_OBJECTS WHERE object_type='PROCEDURE';

2、重新编译过程

ALTER PROCEDURE xs_proc COMPILE;

3、查看过程的源代码

SELECT * FROM USER_SOURCE WHERE TYPE='PROCEDURE';

4、删除存储过程

DROP PROCEDURE xs_proc;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值