oracle学习第六天

索引
B-Tree结构 请参照相应的图例

索引是一种允许直接访问数据表中某一数据行的树形结构,为了提高查询效率而引入,是独立于表的对象,可以存放在与表不同的表空间中
索引记录中存有索引关键字和指向表中数据的指针(地址)
对索引进行的I/O操作比对表进行操作要少得多

索引一旦被建立就将被oracle系统自动维护,查询语句中不用指定使用哪一个索引
ROWID,也是一个伪列,唯一标识一条数据记录,可以理解为行记录的地址
select rownum,rowid,username from t_user;

当建立primary key(主键) 或者unique constraint(唯一约束) 时,唯一索引将被自动创建
数据库会自动为一个表创建一个索引

当创建一张数据表时,rowid自动添加到该表,是系统自动生成

创建索引
create index index_user_id on table_name (id);
create index index_t_index on t_index(id);

查看当前用户的数据对象的名称和类型
select object_name,object_type from user_objects;

drop index index_t_index;

create table t_index(id number, username varchar2(100),password varchar2(48),gender char,addtime date);
创建存储过程(循环插入1999条数据) 注意i变量的使用
create or replace procedure proc_t_index
as
begin
for i in 2..2000 loop
insert into t_index values(i,‘jack‘||i,‘121212‘||i,‘m‘,sysdate);
end loop;
end;
/
exec proc_t_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;
/
create table t_trigger(id number,username varchar2(100));

insert into t_trigger values(1,‘jack‘);
-----------------------------------------------------------
获取插入语句中的语法值
create or replace trigger trigger_t_trigger --创建触发器的关键字和名称
after insert on t_trigger --作用在哪张表上的什么操作,具体执行时间
for each row --对每一行记录都执行该控制
declare --声明
begin
dbms_output.put_line(‘您插入了一条数据...‘);--触发器的具体业务逻辑
dbms_output.put_line(‘id=‘ || :new.id);
dbms_output.put_line(‘username=‘|| :new.username);
end;
insert into t_trigger values(3,‘韩梅梅‘);
-----------------------------------------------------------
获取更新操作的value值
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=‘李雷‘ where id=3;

删除触发器
drop trigger trigger_t_trigger;

案例:
当在第一张表中进行update操作后,对第二张表进行某个值的修改
create or replace trigger trigger_t_trigger
after insert or update on t_trigger
for each row
declare
begin
update t_product set p_name=‘zhang‘ where id=1;
commit;
end;
/

update t_trigger set username=‘张三‘ where id=3;

作业:
使用java和oracle数据库连接
做一个CRUD操作,使用存储过程进行增加数据(序列),修改数据,查询单个数据,使用视图查询列表数据

时间: 2024-11-05 05:36:43

oracle学习第六天的相关文章

玩转oracle学习第六天

 1.上节回顾 2.PL/SQL的介绍 3.PL/SQL的基础 理解oracle的pl/sql概念 掌握PL/SQL编程技术(包括编写过程,函数,触发器,包...) PL/SQL是什么? PL/SQL(procedural language/sql)是oracle在标准的sql语言的扩展,PL/SQL不仅允许 嵌入sql语言, 数据库:编写存储过程,函数,触发器,使用的是PL/SQL语言,PL/SQL简化了复杂度 增加程序的模块化,减小网络的传输的开销,提高安全性,提高程序的运行效率 1.过

oracle 学习

删除用户,创建用户命令 drop user goda cascade:删除用户及其下所有对象,包括表 CREATE USER qdcenter     IDENTIFIED BY qdcenter     DEFAULT TABLESPACE data1     TEMPORARY TABLESPACE temp1     QUOTA unlimited ON data1     QUOTA unlimited ON temp1     QUOTA unlimited ON idx1     Q

Oracle学习-Power Designer、visio 2003、Oracle sql developer、OEM、expdp

Oracle的体系太庞大了.对于刚開始学习的人来说,难免有些无从下手的感觉. 经过一学期的学习对Oracle学习有了一些深入的了解,由于之前学习过Oracle的一些主要的知识.所以学习起来上手比較快一点. 这次Oracle项目让我又一次对Oracle的基本知识进行了运用,而且对软件project也有了新的认识.从需求分析.概念结构设计.逻辑结构设计.物理结构设计.数据库的建立和測试.数据库执行和维护. 尽管说数据库设计的周期比較长将近用了三周左右,可是每一步做的还是非常认真的对待.我选择的是舰队

Oracle学习系列4

Oracle学习系列4 ************************************************************************************ 数据库更新操作: 分类: 查询操作:select 更新操作:insert ,update , delete 为了保存原始的emp表的信息,在进行增删改之前备份词表: create table emp_bak as select * from emp ; //将表emp结构和数据完整的复制出来 添加数据:

Oracle学习系列3

Oracle学习系列3 ************************************************************************************ 多表查询: 1,SQL1999语法对多表查询的支持 2,分组统计及统计函数的使用 3,子查询,并结合多表查询,分组统计做复杂查询 4,数据库的更新操作 5,事务处理和数据库死锁 ****************************************************************

oracle学习--循环语句

oracle学习--循环语句  loop循环: create or replace procedure pro_test_loop is i number; begin i:=0; loop i:=i+1; dbms_output.put_line(i); if i>5 then exit; end if; end loop; end pro_test_loop; while循环: create or replace procedure pro_test_while is i number; b

Oracle 学习笔记 17 -- 异常处理(PL/SQL)

程序在执行过程中出现异常是正常的,在程序的编写过程中出现异常也是不可避免的.但是要有相应的异常处理的机 制,来保证程序的正常执行.PL/SQL程序执行过程中出现的错误,称为异常.一个优秀的程序都应该能够正确处理 各种出错的情况,并尽可能的从错误中恢复.PL/SQL提供了异常处理机制. 概念: 异常处理(exception)是用来处理正常执行过程中未预料的事件,程序块的异常处理定义的错误和自定义的错误, 由于PL/SQL程序块一旦产生异常而没有指出如何处理时,程序就会异常的终止. 有三种类型的错误

Oracle学习系列5

Oracle学习系列5 ************************************************************************************ 1,掌握表的建立与删除 了解Oracle中的主要数据类型 2,约束的分类和使用 3,表的关联:交,并,补 4,掌握ROWNUM伪列的作用 5,掌握序列的使用 6,掌握视图的作用 7,了解同义词,用户管理,权限分配与撤销,数据库的备份 ------------------------------------

oracle学习笔记之用户管理-3

用户权限机制 1.不同用户表权限的赋予 grant select on scott.emp to software; ---当前登录用户为表所有者,则表名前不用指定所属用户 2.用software登录后 select * from scott.emp; ---software才有权限查询到scott的emp表 方案(schema) 当用户创建好后,如果该用户创建了一个数据对象(如表),此时dbms会创建一个对应的方案与改用户对应,并且该方案的名称和用户名称一致. system与scott都拥有自