数据库对象——触发器、索引
2017-09-27 08:56
267 查看
触发器
什么是触发器
触发器的类型
DML触发器
替代触发器
系统触发器
触发器的创建
触发器创建语法
创建DML触发器
触发器中使用谓词
触发器的修改与删除
练习行级触发器
练习要求工资只能增加不能降低
索引
索引的分类
按照索引的存储结构分类
B树索引
位图索引
反向键索引
按照索引值是否唯一分类
唯一索引
非唯一索引
按索引分类
单列索引
组合索引
基于函数的索引
索引语法
实例索引练习
建立索引的特点
不应该建立索引的列
避免限制索引
当一个基表被修改(INSERT、UPDATE或DELETE)时,触发器自动执行。
触发器可实现多个表之间数据的一致性和完整性。
可以定义DML触发器进行insert、update、delete操作。
DML触发器可以在上述操作之前或之后激发,也可以在运行或语句操作上激发。
inserting
updating
deleting
–当有人的工资发生改变时,需要做记录.
当公司多了雇员的时候,添加记录中只有新的工资
当有人离职时,需要把该员工工资修改记录删除
可以建立类似目录的数据库对象,实现数据快速查询。
主键列
经常用在连接的列
经常需要根据范围搜索的列
经常需要排序的列
经常出现在where子句的列
只有很少数据值的列
定义为lob类型的列
修改性能远远大于检索性能
避免使用is null is not null
避免在where子句中使用函数
避免在比较时使用不匹配的数据类型
什么是触发器
触发器的类型
DML触发器
替代触发器
系统触发器
触发器的创建
触发器创建语法
创建DML触发器
触发器中使用谓词
触发器的修改与删除
练习行级触发器
练习要求工资只能增加不能降低
索引
索引的分类
按照索引的存储结构分类
B树索引
位图索引
反向键索引
按照索引值是否唯一分类
唯一索引
非唯一索引
按索引分类
单列索引
组合索引
基于函数的索引
索引语法
实例索引练习
建立索引的特点
不应该建立索引的列
避免限制索引
触发器
什么是触发器?
触发器是一种过程,与表关系密切,用于保护表中的数据。当一个基表被修改(INSERT、UPDATE或DELETE)时,触发器自动执行。
触发器可实现多个表之间数据的一致性和完整性。
触发器的类型
触发器的类型有三种:DML触发器,替代触发器,系统触发器。DML触发器
Oracle可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句或操作上进行触发替代触发器
由于在Oracle里,不能直接对由两个以上的表简历的视图进行操作。所以给出了替代触发器。它就是Oracle 8 专门为进行视图操作的一种处理方法。系统触发器
Oracle 从8i开始,提供了第三种类型的触发器叫系统触发器。它可以在ORACLE数据库系统的事件中进行触发,如ORACLE系统的启动与关闭等。触发器的创建
触发器创建语法
创建DML触发器
DML触发器由DML语句激发,并且由该语句的类型决定DML触发器的类型可以定义DML触发器进行insert、update、delete操作。
DML触发器可以在上述操作之前或之后激发,也可以在运行或语句操作上激发。
触发器中使用谓词
谓词用来判断用户所执行的DML语句的类型.inserting
updating
deleting
触发器的修改与删除
--触发器的禁用 alter trigger emp_sal_trigger disable; --启用触发器 alter trigger emp_sal_trigger enable; --删除触发器 drop trigger XXXXX; --查询当前用户的所有触发器 select * from user_triggers;
练习:行级触发器
题目要求:–当有人的工资发生改变时,需要做记录.
当公司多了雇员的时候,添加记录中只有新的工资
当有人离职时,需要把该员工工资修改记录删除
create or replace trigger emp_sal_trigger after update or insert or delete on emp1 for each row --行级触发器 begin if updating then insert into emp_sal values(:old.empno,:new.sal,:old.sal,sysdate,emp_sal_seq.nextval); ELSIF inserting then insert into emp_sal values(:new.empno,:new.sal,0,sysdate,emp_sal_seq.nextval); else delete from emp_sal where empno=:old.empno; end if; exception when others then dbms_output.put_line('添加失败!'); end;
练习:要求工资只能增加不能降低
create or replace trigger keep_sal_trigger before update on emp1 for each row begin if :new.sal<:old.sal then :new.sal:=:old.sal; end if; end;
索引
索引:可以建立类似目录的数据库对象,实现数据快速查询。
索引的分类
按照索引的存储结构分类
B树索引
位图索引
反向键索引
按照索引值是否唯一分类
唯一索引
非唯一索引
按索引分类
单列索引
组合索引
基于函数的索引
索引语法
实例:索引练习
建立索引的特点
经常需要搜索的列主键列
经常用在连接的列
经常需要根据范围搜索的列
经常需要排序的列
经常出现在where子句的列
不应该建立索引的列
查询中很少使用或者参考的列只有很少数据值的列
定义为lob类型的列
修改性能远远大于检索性能
避免限制索引
避免使用不等操作符(<>、!=)避免使用is null is not null
避免在where子句中使用函数
避免在比较时使用不匹配的数据类型
相关文章推荐
- 数据库对象 同义词 索引 序列 视图
- 数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数
- Oracle中查看无效的对象、约束、触发器和索引(转自Helloblock)
- orcal数据库seq及索引及触发器自增id的建立及注意
- Java学习笔记之数据库(触发器、事物、索引、投影和除、视图、存储过程和函数 )含各种链)___ 一直补充
- Oracle中查看无效的对象、约束、触发器和索引
- 12.数据库对象----触发器(trigger)
- 错误602 未能在sysindexes中找到数据库ID8中对象ID1的索引ID1对应的行。请对sysindexes运行DBCC CHECKTABLE
- 数据库知识点总结(发展,约束,索引,触发器,连接池,视图,事务)
- 14.数据库oracle必学,其他最好了解一种以上(mysql,sql server,access==) oracle:视图,索引,存储过程,触发器,游标,包,常用函数
- SQL Server查询数据库所有存储过程、触发器、索引信息SQL分享
- 错误602 未能在 sysindexes 中找到数据库 ID 12 中对象 ID 1 的索引 ID 1 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。
- 查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数
- 008 数据库对象—触发器—讲解
- 查询SQLServer2005中某个数据库中的表结构、索引、视图、存储过程、触发器以及自定义函数
- 【数据库学习笔记】Oracle_04_存储过程,函数,触发器,索引,同义词
- 数据库 --- 索引、触发器、事务(存储引擎)
- sp_depends 被检查相关性的数据库对象。对象可以是表、视图、存储过程或触发器 in sql server
- 数据库对象——触发器——轻松走进数据库系列六