索引
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. 基础题:HDU 5122 K.Bro Sorting

    Matt's friend K.Bro is an ACMer.Yesterday, K.Bro learnt an algorithm: Bubble sort. Bubble sort will ...

  2. Microsoft SQL Server 2008 安装图解(Windows 7)

    简介 本文详细记录了一次完整的Microsoft SQL Server 2008在Windows 7操作系统上的安装过程.注意:Microsoft SQL Server 2008与Windows 7操 ...

  3. ARM学习笔记6——程序状态寄存器访问指令

    这两条指令结合,可用于对CPSR或SPSR进行读/写操作. 当需要保存或修改当前模式下CPSR或SPSR的内容时,首先必须将这些内容传递到通用寄存器中 1.MRS指令(Move to Register ...

  4. [Boost::Polygon]多边形相减得到新的多边形序列

    #include <iostream> #include <boost/polygon/polygon.hpp> #include <cassert> namesp ...

  5. RHEL7磁盘分区挂载和格式化

    安装大数据平台,每台机器需要挂载10个磁盘,用JBOD模式,操作系统为RHEL7.2. 写了两个脚本,format_disk.sh和mount_disk.sh实现磁盘自动分区格式化以及挂载,修改fst ...

  6. Yii 的AR单行数据自动缓存机制

    相关的YII类: CActiveRecord CActiveRecordBehavior cache Active Record Active Record (AR) 是一个流行的 对象-关系映射 ( ...

  7. Linux下多任务间通信和同步-信号

    Linux下多任务间通信和同步-信号 嵌入式开发交流群280352802,欢迎加入! 1.概述 信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式.信号可以直接进行用户空间进程和内核进程之间的 ...

  8. CSS 最核心的几个概念

    CSS 中最核心的几个概念,包括:盒模型.position.float等. 这些是 CSS 的基础,也是最常用的几个属性,它们之间看似独立却又相辅相成. 元素类型 HTML 的元素可以分为两种: 块级 ...

  9. Node调试工具JSHint

    Node调试工具JSHint的安装及配置教程 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-27我要评论 Node的优势我就不再乱吹捧了,它让javascript统一web的前后台成 ...

  10. 【JAVA - SSM】之MyBatis输出映射

    MyBatis中的输出映射有两种:resultType和resultMap. 1.resultType 使用resultType进行结果映射时,只有当查询结果中有至少一列的名称和resultType指 ...