首页 / ORACLE / Oracle学习【索引及触发器】
Oracle学习【索引及触发器】
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle学习【索引及触发器】,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3423字,纯文字阅读大概需要5分钟。
内容图文
![Oracle学习【索引及触发器】](/upload/InfoBanner/zyjiaocheng/1059/0363f2594ab44f64b8ff92918f852b8d.jpg)
索引
B_Tree结构 请参照 响应图例
索引是一种允许直接访问数据表中某一数据行的树形结构,为了提高查询效率而引入,是独立于表的对象,可以存放在与表不同的表空间中。
索引记录中存有索引关键字和指向表中数据的指针(地址)
对索引进行的I/O操作比对表进行操作要少得多
索引一旦被建立就将被oracle系统自动维护,查询语句中不用指定使用哪一个索引
ROWID:伪列,唯一标识一条数据记录,可以理解为行记录的地址
select rownum,rowid,username from t_user;
当建立primary key(主键)或者unique constraint(唯一约束)时,唯一索引将被自动创建
当创建一张数据表时,rowid自动添加到该表,是系统自动生成的
创建表t_index
create table t_index(
id number,
username varchar2(100),
password varchar2(48),
gender char,
addtime date
);
插入记录
insert into t_index values (1,‘Owen‘,‘121212‘,‘m‘,sysdate);
创建索引
create index index_t_index on t_index(id);
查看当前用户的数据对象的名称和类型
select object_name,object_type from user_objects;
删除索引
drop index index_t_index;
创建存储过程(循环插入1999条记录)
create or replace procedure proc_index
as
begin
for i in 2..2000 loop
insert into t_index values (i,‘Owen‘||i,‘121212‘||i,‘m‘,sysdate);
end loop;
end;
执行存储过程
exec proc_index;
打开执行耗时
set timing on;
-------------------------------------------------
触发器trigger
是数据库对象的一种,编写方式类似存储过程,与某张表相关联,当进行DML语句操作的时候可以引起触发器的执行
目的是对插入记录一致性、正确性和规范性的控制。
创建触发器
create or replace trigger trigger_t_trigger --创建触发器的关键字和名称
after insert on t_trigger --作用在哪张表上的什么操作,具体执行时间
for each row --对每一行记录都执行该控制
declare --声明
begin
dbms_output.put_line(‘你插入了一条数据。。。‘); --触发器的具体业务逻辑代码块
end;
创建表t_trigger
create table t_trigger(
id number,
username varchar2(100)
);
插入一条记录
insert into t_trigger values(1,‘Owen‘);
创建触发器
create or replace trigger trigger_t_trigger --创建触发器的关键字和名称
after insert or update on t_trigger --作用在哪张表上的什么操作,具体执行时间
for each row --对每一行记录都执行该控制
declare --声明
begin
dbms_output.put_line(‘你更新了一条数据。。。‘); --触发器的具体业务逻辑代码块
dbms_output.put_line(‘old.username=‘||:old.username);
dbms_output.put_line(‘new.username=‘||:new.username);
end;
插入一条记录
update t_trigger set username=‘Jack‘ where id=1;
删除触发器
drop trigger trigger_t_trigger;
案例:
当在第一张表中进行update操作后,对第二张表进行某个值得修改。
例如:在对表t_trigger进行修改的时候,对表t_index也进行修改
创建触发器
create or replace trigger trigger_t_trigger
after insert or update on t_trigger
for each row
declare
begin
update t_index set username=‘Jack‘ where id=1;
end;
修改t_trigger表中的数据
update t_trigger set username=‘Owen‘ where id=1;
作业:
使用java和oracle数据库连接
做一个CRUD操作,使用存储过程进行增加数据(序列)、修改数据、查询单个数据,使用视图查询列表数据
创建表student
create table student(
stuid number,
sname varchar2(100),
sage number
);
创建序列
create sequence seq_student --创建序列的关键字和序列名称
插入一条数据
insert into student values (seq_student.nextval,‘Owen‘,23);
创建插入数据的存储过程
create or replace procedure proc_add(pp1 in varchar2,pp2 in number)
as
begin
insert into student values (seq_student.nextval,pp1,pp2);
end;
执行存储过程
call proc_add(‘Owen‘,23);
---------------------------------
创建删除的存储过程
create or replace procedure proc_delete(pp in number)
as
begin
delete from student where stuid=pp;
end;
执行存储过程
call proc_delete(2);
-------------------------------------
创建修改的存储过程
create or replace procedure proc_modify(pp1 in varchar2,pp2 in number,pp3 in number)
as
begin
update sudent set sname=pp1,sage=pp2 where stuid=pp3;
end;
执行存储过程
call proc_modify(‘Tim‘,21,3);
---------------------------------------
创建查询单个数据的存储过程
create or replace procedure proc_search_one(pp1 in number,pp2 out varchar2,pp3 out number)
as
begin
select sname,sage into pp2,pp3 from student where stuid=pp1;
end;
执行存储过程
set serverout on;
var pp2 varchar2;
var pp3 number;
call proc_search_one(3,:pp2,:pp3);
---------------------------------------
建立视图(不显示stuid)
create or replace view v_student
as
select sname,sage from student;
查询视图
select * from v_student;
原文:http://www.cnblogs.com/xujianbo/p/4921842.html
内容总结
以上是互联网集市为您收集整理的Oracle学习【索引及触发器】全部内容,希望文章能够帮你解决Oracle学习【索引及触发器】所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。