视图(作用):
1、限制对数据库的访问
2、将复杂的查询简单化
3、维护数据的独立性
4、对于相同的数据可产生不同的视图
通常用来查询数据,也可改变表中数据,但并不推荐
原因如下:
如果视图中包含以下内容,则不能实现数据的插入:
1、group 函数,group by(分组),distinct(去重)
2、 用表达式定义的列
3、ROWNUM伪列
4、基表中未在视图中选择其他的列,定义为非空,而且没有默认值
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
序列(作用):
1、自动产生唯一数值
2、是一个可以共享的对象
3、用于主键值的创建
4、当序列驻留在缓存(cache)中时,可以有效的提高序列的访问效率
5、序列数值的产生和存储与表无关
NEXTVAL:返回下一个有效的序列值
CURRVAL:获取当前序列值,在被引用之前必须用NEXTVAL产生一个值
不管产生还是获取序列值,只要得到序列值后,该序列值无法继续使用,下次则自动获取
下个序列值
序列的修改:
1、必须是序列的所有者,或者具备ALTER序列的权限
2、只能影响修改之后产生的序列值,对之前序列值没有影响
3、如果要求序列冲一个不同的值重新开始生产数值,必须删除序列,在重建该序列
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
索引
可以建立类似目录的数据库对象,实现数据的快速查询
作用:
1、可以有效的提高Oracle服务器检索记录的速度
2、通过快速路径访问方法迅速定位数据,减少磁盘的I/O操作
3、独立于创建索引的表
4、Oracle服务器自动使用和维护索引
分类:
1)按照索引的存储结构分类:
1.1、B数索引
1.2、位图索引
1.3、反向键索引
2)按索引值是否唯一分类
2.1、唯一索引
2.2、非唯一索引
3)按索引列分类
3.1、单列索引
3.2、组合索引
3.3、基于函数索引
实现原理:
1) B树索引原理:
把建立索引的列的值,作为‘’叶子‘’当成树的底层,Oracle对叶子根据值来分块,当查找某条
记录时,首先根据建立索引的列值,找到对应的‘’叶子‘’块,在根据对应的地址找到上层里对应的
数据行。
2)位图索引原理:
通过二进制值标识索引列对应的数据,从而快速找到数据
创建:
自动:当增加主外键约束或者唯一约束时,自动创建索引
手动:可以在列上闯将非唯一索引,有效的提高对记录的访问速度
以下情况不需要创建索引
1、表很小
2、很少在查询条件中出现的列
3、绝大多数情况下查询结果大于表总记录数的2-4%
4、频繁封信的表
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
事务:
是指作为单个逻辑工作单元执行的一组相关操作
特点:
1、原子性(atomic):
事务里的语句已经不能再被拆分,是一个整体
2、一致性(vonsistence):
事务中所有数据的修改,要么全部执行,要么全部不执行
3、隔离性(isolation):
事务与事务间没有任何关系,是独立、隔离的
4、持久性(durability):
保证事务对数据库的修改是持久有效的,即使发生系统故障也不丢失
事务的使用步骤:
1、开启事务
记录每条SQL语句是否执行成功
2、根据执行结果判断
提交事务:数据真正影响到数据库的表中数据
回滚事务:对执行过的语句,恢复到执行前的状态
分类:
1)隐式事务(默认)
单独的一条操作语句就是一个事务
2)显式事务
开启事务后(begin),可以通过commit 提交事务,若出现异常(exception), 可以通过rollback回滚