• 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操作,使用存储过程进行增加数据(序列),修改数据,查询单个数据,使用视图查询列表数据

  • 相关阅读:
    面试题38:股票最大收益问题
    面试题37:字符串中的括号
    面试题36:罗马数和阿拉伯数的相互转换
    面试题35:大数(字符串)相乘
    面试题34:文本对齐
    面试题33:简化目录路径
    面试题32:字符串的通配符匹配
    并发调度的可串行性
    mysql limit查询(分页查询)探究
    通过宏定义将__declspec(dllexport)与__declspec(dllimport)的转化,实现库代码和使用代码使用同一份头文件
  • 原文地址:https://www.cnblogs.com/zy19930408/p/4875443.html
Copyright © 2020-2023  润新知