在Orcale中使用视图和存储过程
一.视图
1.为什么要引入视图这个概念?
试想如果我们要使用计算列调整数据的结构,或者基于列值比较从多个表中抽取数据,我们就不得不采取相对很复杂的SQL语句.但是,如果我们要多次按照
这种方式获取数据,那岂不是要一遍又一遍的重复写这些复杂的SQL语句,那是一件多么令人头痛的事啊,但是,有了视图,我们就可以完全避免这些不必要
多做这些无用功了,SQL允许我们在数据库中创建视图.视图提供了一种半持久性的改造方式,这样我们就可以通过访问视图来代替直接访问表,换句话说就是
视图就相当于一个抽象层,这样就能是我们以一种更一致的方式格式数据.同时这样也大大提高了数据的安全性,用户仅可以访问到视图,而不能访问到下层的
数据.
2.视图有那些优点?
1.将用户的注意力集中在特定的数据上,从而提高数据的安全性
2.简化了数据的查询和处理操作,DBA可以把大量的相关的内容设计到一个视图中,使用户在查询和处理数据时就像处理表那么简单,而不用编写复杂的
select语句
3.有利于数据的交换
4.有利于简化对用户权限的管理
3.在SQL如何创建和使用视图?
创建视图:
->create view 视图名称 as Query(任意的select语句)
Example:CREATE VIEW selectstudent
AS select name from student;(该例子就提高了数据的按全性,在用户调用这个视图时,就只能看到学生名字)
使用视图:
->select 字段名 from 视图名 where 过滤条件
Example(接上):select name from selectstudent where name = '张三';
4.怎样更改视图?
->CREATE OR REPLACE VIEW 视图名 AS Query
5.怎样删除视图?
->DROP VIEW 视图名
二.存储过程
1.什么是储存过程?
我们在使用SQL进行编程时,可以使用两种方法储存和执行程序.可以在本地储存程序,创建并向数据库发送命令并处理结果的应用程序,最好的方法当然是将程序在数据库储存为
储存过程,创建执行储存过程并处理结果的应用程序.
2.存储过程有什么作用?
->接受输入参数并以输出参数的形式将多个值返回至调用过程或进行批处理
->执行数据库操作的编程语句
->向调用过程或批处理返回状态值表明成功或失败以及失败的原因
3.使用存储过程有那些优势?
->允许模块化程序设计.只需创建过程一次并将其保存在数据库中,以后就能在程序中调用该过程任意次
->允许更快的执行.如果某项操作需要大量的SQL代码或需要重复执行,存储过程将比SQL代码执行的要快
->减少网络流量.一个需要数百行的SQL代码操作由一条执行过程代码的单独语句就可以实现,而不需要在网络中发送数百行代码.
->可作为安全机制使用
4.如何创建存储过程?
->CREATE [OR REPLACE] 存储过程名 (参数列表)
AS
BEGIN
存储过程主体
END;
->Orcale中参数的模式:参数名 IN 或 OUT 数据类型
Example:
create or replace insertstudent(i_studentid in int,i_studentname in vachar);
as
begin
insert student(studentid,name)values(i_studentid,i_studentname);
end;
使用该存储过程
call insertstudent(1,'张三');
->使用输出参数:
Example:
create or replace getstudentname(i_studentid in int,o_studentname out vachar);
as
begin
select name into o_studentname from student where studentid = i_studentid;
end;
使用该存储过程
set severout on --单独执行
declare
studentname vachar(50);--变量声明
begin
getstudentname(1,studentname);
dbms_output.put_line(studentname);
end;
着输出结果为:张三