索引
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学习【索引及触发器】的更多相关文章

  1. Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)

    触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的 ...

  2. Oracle学习笔记之触发器

    触发器 触发器(trigger)是一些过程,与表关系密切,用于保护表中的数据,当一个基表被修改(INSERT.UPDATE或DELETE)时,触发器自动执行,例如通过触发器可实现多个表间数据的一致性和 ...

  3. MYSQL数据库学习----索引和触发器

    一:索引 索引是创建在数据库表上,其作用是提高对表中数据的查询速度. 假设数据库中有一张1000条记录的表格,如果没有创建索引的话,用户想通过查询条件查询,实际上是把整个数据库中1000条记录都读取一 ...

  4. oracle 学习笔记之触发器

    说明 数据库触发器是一个与表相关联的.存储的PL/SQL程序. 每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自己主动地运行触发器中定义的语句序 ...

  5. Oracle学习笔记十三 触发器

    简介 触发器是当特定事件出现时自动执行的存储过程,特定事件可以是执行更新的DML语句和DDL语句,触发器不能被显式调用.   触发器的功能: 1.自动生成数据 2.自定义复杂的安全权限 3.提供审计和 ...

  6. Oracle初级索引学习总结

    前言  索引是常见的数据库对象,建立索引的目的是为了提高记录的检索速度.它的设置好坏,使用是否得当,极大地影响数据库应用程序和Database的性能.虽然有许多资料讲索引的用法,DBA和Develop ...

  7. Oracle 学习之触发器

    1. 触发器简介 触发器是存储在数据库服务器中的程序单元,当一个表或一个视图被改变,或者数据库发生某些事件时,Oracle会自动触发触发器,并执行触发器中的代码.只有在触发器中定义的事件发生时,触发器 ...

  8. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  9. 6. oracle学习入门系列之六 模式

    oracle学习入门系列之六 模式 上篇咱们学习记录了ORACLE数据库中的数据库结构.内存结构和进程等.篇幅 蛤蟆感觉偏多了.这次要休整下,每次笔记不宜太多,不然与书籍有何差别. 我们要保证的是每次 ...

  10. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

随机推荐

  1. 数学类杂志SCI2013-2014影响因子

    ISSN Abbreviated Journal Title Full Title Category Subcategory Country total Cites IF        2013-20 ...

  2. C随便练练手的题

    判断101-200之间有多少个素数,并输出所有素数 #include <stdio.h> int main(){ ; ; ; ){ while(may<cur){ ){ break; ...

  3. Centos6.x X64 飞信安装

    Centos6.x X64 飞信安装 1,安装飞信依赖包 yum -y install glibc.i686 krb5-libs.i686 libstdc++.i686 zlib.i686 --set ...

  4. Java 并发包中的读写锁及其实现分析

    1. 前言 在Java并发包中常用的锁(如:ReentrantLock),基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时 刻可以允许多个读线程访问,但是在写线程访问时,所有 ...

  5. Java-struts2的问题 java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils

    缺commons-lang3-3.1.jar,添加之后就可以了

  6. android85 短信防火墙

    系统收到短信是有广播的,广播中包含了短信的号码和内容 ###短信防火墙 * 系统发送短信广播时,是怎么把短信内容存入广播的,我们就只能怎么取出来 * 如果短信过长,那么发送时会拆分成多条短信发送,那么 ...

  7. 使用QEMU调试Linux内核代码

    http://blog.chinaunix.net/uid-20729583-id-1884617.html http://www.linuxidc.com/Linux/2014-08/105510. ...

  8. careercup-链表 2.5

    2.5 给定两个用链表表示的整数,每个结点包含一个数位.这些数位是反向存放的,也就是个位排在链表首部.编写函数对这两个整数求和,并用链表形式返回结果. 示例: 输入: (7->1->6)+ ...

  9. Messages的例子

    13.33 13.36 13.37 Message.h #ifndef MESSAGE_H #define MESSAGE_H #include<iostream> #include< ...

  10. MVVM架构的一次实践,重写iOS头条客户端

    前言: 一个iOS头条APP,使用MVVM架构实现,代码中有注释,封装了AFN网络请求,解媾代码,使用起来非常方便.用最经典的TableView展示,后续不断更新,喜欢就star或fork一下,有问题 ...