唯一性标识。
4. 使用索引的好处:
?
(1) 创建唯一索引后保证每行数据的唯一性。
(2) 可以加速检索数据的速度。
(3) 多表查询时加速表之间的连接。
(4) 减少分组和排序的时间。
?
?
5. 适合创建索引的字段具有的特点:
?
(1) 取值范围较大的字段
(2) Null值比较多的字段
(3) 经常作为查询和连接条件的字段
(4) 经常需要排序的字段
?
?
6. 不适合创建索引的表或字段的特点:
?
(1) 较小的表
(2) 经常更新的表
(3) 不经常作为查询和连接条件的字段
?
?
?
7. 索引类型:B树索引、位图索引、反向键索引、基于函数的索引、全局索引、局部索引
8. B树索引是Oracle默认的索引类型。适合被索引的列值基本没有相同的值。
9. B树索引优点:
?
(1) B树中所有叶子节点基本处于同一深度。所以查询任何记录的时间基本相同。
(2) B树的索引结构是自动保持平衡的。
(3) B树为一定范围的查询提供了极好的性能。
(4) B树的插入、更新、删除效率高。
(5) B树索引的性能不会因为表的大小增长而降低。
?
?
10. 位图索引:也采用B树索引,只是索引值全部集中在叶子节点上。适合检索很少有唯一值的列,比如性别。
11. Oracle中,系统会自动为表的主键列建立索引,这个默认的索引是B树索引。
12. 反向键索引:特殊的B树索引,适合为有序数列建立索引。避免有序数列构成B树的“歪树”现象,使树比较均匀。
13. 函数索引:也是B树索引,是基于字段的函数建立的,而不是直接建立在字段上。
14. 函数索引的作用:
?
(1) 只对限定的行创建索引,节约空间,提高检索速度。
(2) 优化where子句使用了函数的SQL语句。
?
?
?
简答题:
1. 简述索引的类型有哪些,并说明什么情况下适合建立反向键索引,什么情况下适合建立位图索引?
?
答:索引类型:B树索引、位图索引、反向键索引、基于函数的索引、全局索引、局部索引
?
反向键索引适合建立在有序数列上。
?
位图索引适合建立在很少有唯一值的列,比如性别。如果列中的唯一值和总的记录数之比少于1%,则适合于位图索引。
?
第十章 序列
1. 序列也是方案对象,用于产生一系列唯一数字。可以用它自动生成主键值
2. 序列可以在多用户并发环境中使用,为所有用户生成不重复的顺序数字而且不需要额外的IO开销。
3. 用户在自己的方案中创建序列,必须要有create sequence系统权限,在其他方案中创建序列,必须要有create any sequence系统权限。
4. 用户可以使用nextval和currval两个运算符访问序列的值。nextval将返回序列生成的下一个值,currval将返回序列的当前值。第一次使用序列时,需要使用nextval,此时返回的是初始值。以后再使用nextval运算符,序列会自动增加increment by后面的值。
5. 修改其他方案中的序列时,用户必须具有alter any sequence系统权限。
?
?
?
简答题:
1. 简述序列的概念。
?
答:序列可在当前方案下产生一系列唯一数字,可以用这些数字产生表的主键值,也可以参与其他运算。序列也可在多用户并发环境中使用,为所有用户生成不重复的顺序数字,而不需要任何的额外I/O开销.
?
?
2. 序列常用的两个运算符是什么?各代表什么意义?
?
答:nextval运算符和currval运算符
nextval将返回序列生成的下一个值,currval将返回序列的当前值。
第十一章 触发器
1. 触发器是一种特殊的存储过程,是通过事件触发被系统自动调用的(不是由程序调用,也不是手工启动)。是一个独立的事务,被当做整体执行,在执行过程中发生错误,则整个事务自动回滚。触发器用于加强数据的完整性约束。
2. 按触发器时间划分:before触发器、after触发器、instead of触发器。
3. 按触发事件划分:DML触发器、DDL触发器、用户事件触发器、系统事件触发器。
4. DML触发器分为:行级触发器、语句级触发器
5. DDL触发器分为:数据库级DDL触发器、用户级DDL触发器
6. 行级触发器:使用了for each row. DML 命令每操作一行记录,触发器就被触发一次。当DML语句影响多行记录时,行级触发器被触发多次。
7. 行级触发器有一个重要的特点就是可以在触发器中引用当前DML命令正在操作的行值,包括新值和旧值。这些值被保存在Oracle中的两张临时表中分别是new表和old表。这两张表的结构和DML正在操作的表结构完全相同,但只有一行记录。在new表中包含insert语句要插入的新数据或update语句修改后的新数据,可以在行级触发器中修改他们的值。在old表中包含delete语句删除以前的旧数据或update语句修改前的旧数据,不允许在触发器中修改它们的值。
8. new表和old表是内存中的两张逻辑表,只能在行级触发器中使用,不能在语句级触发器中使用。当用户添加数据或修改数据时,系统先将这些新数据写到内存的new表中,再将new表中的数据写到数据库的物理表中。当用户删除数据或修改数据时,系统先将旧数据写到old表中,再更新物理表中的数据。
?
?
?
简答题:
1. 简述Oracle中的触发器的类型及触发器的条件。
?
答:
(1) 按触发时间分:
Before触发器:在触发语句执行前被触发。
After触发器:在触发语句执行后被触发。
Instead of触发器:触发语句被触发器替代。
?
(2) 按触发事件分
?
DML触发器:对表或试图执行DML操作(select、insert、update)时触发。
DDL触发器:对数据库执行DDL操作(create、alter、drop)时触发。
用户事件触发器:用户执行DCL操作时触发。
系统事件触发器:由系统事件进行触发。
第十二章 事务
1. 事务是一个单独的逻辑工作单元,也是一个操作序列,包含一条或多条语句。这些语句被当做一个整体执行。
2. 一个事务中的语句要么都执行成功,要么都执行失败。一旦某个操作发生异常,则整个是误会重新开始,数据库就会返回事务最开始的状态,所做的所有操作都会取消。如果成功,所有的操作都被执行。
3. Oracle中不能显式的定义一个事务开始,一般在上一个事务结束(回滚或提交)后的第一条语句隐式的定义事务。
4. Oracle可以显式或隐式地结束一个事务。
5. 以下情况表示事务结束
?
(1) commit显式提交事务
(2) rollback回滚事务。注意:若只回滚到保存点(savepoint),整个事务不会结束
(3) 执行DDL语句(create、drop、alter),这些命令单独作为一个事务。在执行这些DDL命令之前将提交以前执行的所有命令;执行DDL命令之后将该DDL命令单独作为一个事务提交;DDL执行之后的其他语句将作为新的事务。
(4) 用户正常断开与Oracle的连接,当前的事务被自动提交。
(5) 用户进程意外终止,当前事务被回滚。
(6) 关闭SQL *Plus会话,默认回滚事务。
?
?
6. 事务的特性:ACID 原子性 一致性 隔离性 持久性
?
?
?
?
简答题:
1. 哪些情况发生后事务将终止?
?
答:
1. commit显式提交事务
2