0925 视图、游标、包、触发器、索引

来源:互联网 发布:mysql 名称去重复连接 编辑:程序博客网 时间:2024/05/22 02:13

一、视图的特点

是一个数据库中虚拟的表;经过查询操作形成的结果;具有普通表的结构;不能实现数据的存储;对视图的修改将会影响实际的数据表。

--添加视图
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

可以建立类似目录的数据库对象,实现数据快速查询。





阅读全文
0 0
原创粉丝点击