0925 视图、游标、包、触发器、索引
一、视图的特点
是一个数据库中虚拟的表;经过查询操作形成的结果;具有普通表的结构;不能实现数据的存储;对视图的修改将会影响实际的数据表。
--添加视图
create or replace view emp_dept_view
as select* from emp natural join dept;
--查询视图
select * from emp_dept_view;
--删除视图
drop view emp_dept_view;
二、同义词
--创建同义词
create synonym access_ for sys.access$
--使用同义词
select * from access_
--创建公共同义词
create public synonym aw_ for sys.aw$
--使用同义词
select * from aw_
--删除同义词
drop synonym access_
--删除公共同义词
drop public synonym aw_
三、游标
游标用来处理从数据库中检索的多行记录(使用select语句)。利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集。
游标分类:
静态游标:结果集已经确定,
隐式:所有的dml语句为隐式游标;
显示:用户显示声明。
动态游标。
--声明游标
cursor cursor_name is select * from emp;
--打开游标
open cursor_name;
--取得结果放入PL/SQL变量中
fetch cursor_name into emp;
--关闭游标
close cursor_name;
游标的属性
四、Oracle中的包
包是有存储在一起的相关对象组成的PL/SQL结构,用于逻辑组合相关的自定义类型、变量、游标、过程和函数。
包头:用于定义常亮、变量、游标、过程和函数等用户与程序的接口,可以在包内引用,也可以被外部程序调用;
包体:是包头的实现,包括变量、游标、过程和函数等,包体内的内容不能被外部应用程序调用。
创建包头
create or replace package test_package
as
--声明一个存储过程
procedure add_emp_pro(emp_ in emp1%rowtype);
--声明函数
function sum_func(num1 number,num2 number)
return number;
end test_package;
创建包体
create or replace package body test_package
as
-- 实现存储过程
procedure add_emp_pro(emp_ in emp1%rowtype)
as
begin
dbms_output.put_line('成功添加一条数据');
end;
--实现函数
function sum_func(num1 number,num2 number)
return NUMBER
as
begin
return num1+num2;
end;
end test_package;
包的调用
使用包名作为前缀,对包中的对象进行调用
语法:package_name.type_name;
实例:
begin
emp_package.my_proc('1010','loader','male','music');
end;
五、触发器trigger
触发器是一种过程,与表关系密切,用于保护表中的数据。当一个基表被修改(insert、update、delete),触发器自动执行。触发器可实现多个表之间数据的一致性和完整性。
创建触发器语法
伪记录
:old:代表操作完成前的旧记录
:new:代表操作完成后的新记录
触发器中使用谓词
谓词用来判断用户所执行的DML语句类型:inserting、updating、deleting
六、索引index
可以建立类似目录的数据库对象,实现数据快速查询。