Oracle学习【索引及触发器】
索引
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;
Oracle学习【索引及触发器】的更多相关文章
- Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)
触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的 ...
- Oracle学习笔记之触发器
触发器 触发器(trigger)是一些过程,与表关系密切,用于保护表中的数据,当一个基表被修改(INSERT.UPDATE或DELETE)时,触发器自动执行,例如通过触发器可实现多个表间数据的一致性和 ...
- MYSQL数据库学习----索引和触发器
一:索引 索引是创建在数据库表上,其作用是提高对表中数据的查询速度. 假设数据库中有一张1000条记录的表格,如果没有创建索引的话,用户想通过查询条件查询,实际上是把整个数据库中1000条记录都读取一 ...
- oracle 学习笔记之触发器
说明 数据库触发器是一个与表相关联的.存储的PL/SQL程序. 每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自己主动地运行触发器中定义的语句序 ...
- Oracle学习笔记十三 触发器
简介 触发器是当特定事件出现时自动执行的存储过程,特定事件可以是执行更新的DML语句和DDL语句,触发器不能被显式调用. 触发器的功能: 1.自动生成数据 2.自定义复杂的安全权限 3.提供审计和 ...
- Oracle初级索引学习总结
前言 索引是常见的数据库对象,建立索引的目的是为了提高记录的检索速度.它的设置好坏,使用是否得当,极大地影响数据库应用程序和Database的性能.虽然有许多资料讲索引的用法,DBA和Develop ...
- Oracle 学习之触发器
1. 触发器简介 触发器是存储在数据库服务器中的程序单元,当一个表或一个视图被改变,或者数据库发生某些事件时,Oracle会自动触发触发器,并执行触发器中的代码.只有在触发器中定义的事件发生时,触发器 ...
- Oracle学习笔记—数据字典和常用命令(转载)
转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...
- 6. oracle学习入门系列之六 模式
oracle学习入门系列之六 模式 上篇咱们学习记录了ORACLE数据库中的数据库结构.内存结构和进程等.篇幅 蛤蟆感觉偏多了.这次要休整下,每次笔记不宜太多,不然与书籍有何差别. 我们要保证的是每次 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
随机推荐
- 基于SharePoint 的企业信息平台架构
- ASP.NET内部原理(HttpHandler和HttpModule)
[IT168 技术文档]在以前的ASP时候,当请求一个*.asp页面文件的时候,这个HTTP请求首先会被一个名为 inetinfo.exe进程所截获,这个进程实际上就是www服务.截获之后它会将这个请 ...
- [ZETCODE]wxWidgets教程三:第一个窗体程序
本教程原文链接:http://zetcode.com/gui/wxwidgets/firstprograms/ 翻译:瓶哥 日期:2013年11月27日星期三 邮箱:414236069@qq.com ...
- First Adventures in Google Closure -摘自网络
Contents Introduction Background Hello Closure World Dependency Management Making an AJAX call with ...
- Yii 生成表单下拉选框及查询下拉选框
CHtml类参考: http://www.yiichina.com/api/CHtml#activeDropDownList-detail activeDropDownList() 方法 public ...
- jsp中的forward和redirect的区别
转自http://blog.163.com/tsing_hua/blog/static/139622224201101110836644/ 一.调用方式 我们知道,在servlet中调用转发.重定向的 ...
- Java学习——数据类型【2】
1. 对象与类 对象:类的一个实例,有状态和行为. 类:一个模板,描述一类对象的行状态和行为. 2. 类可以包含的变量 类型 局部变量 成员变量 类变量(静态变量) 定义位置 方法.或语句块中 类中, ...
- AppiumLibrary
Strategy Example Description identifier Click Element|identifier=my_element Matches by @id or @name ...
- Mina学习之IoHandler
IoHandler处理事件在Filter Chain 之后进行.IoHandler包含处理以下几个事件的功能: 1. sessionCreated event: session创建事件,对于Tcp而言 ...
- linux 入侵检查转载
转载 本文给大家收集整理了一些审查Linux系统是否被入侵的方法,这些方法可以添加到你运维例行巡检中. 1. 检查帐户 代码如下: # less /etc/passwd # grep :0: /etc ...