Oracle学习第九课-视图,序列,索引,事务【Oracle暂时结束】

视图(View)

关键词: view

创建视图: create view 视图名 as select语句

含义: 将select语句的查询结果,作为视图,可以供查询使用.

使用视图: view 就是一个虚拟表.

select 列名,列名,列名
from 视图名;

优点:

  1. 简化SQL语句.

  2. 安全性,对开发人员屏蔽掉表和字段信息.

注意:

  1. 视图提高查询效率 [错误说法]

  2. 视图本质就是存储了select语句, 视图基本不会占用硬盘空间.

删除视图: drop view 视图名;


序列(sequence)

概念: oracle提供的工具,产生一系列连续且不重复的值.

创建序列:

create sequence 序列名 [start with 数字]

使用序列获得值:

序列名.nextval
-- 从序列中获取一个值并展示出来.
​
-- 查询序列中的值
select 序列名.nextval
from dual;
​
-- 应用: 添加数据保证id主键是不重复?
insert into 表名 values(序列名.nextval,......);

删除序列

drop sequence 序列名

索引 Index[重要]

问题: 数据量1000w(Oracle)会出现查询效率急剧降低?

作用: 提高select查询效率.

核心思路:

创建索引: create index 索引名 on 表(字段)

相当于: create index 索引名 on 字典表(拼音)

使用索引: 不需要手动使用, 默认使用索引字段为条件进行查询时,数据库会自动使用索引查找数据.

删除索引: drop index 索引名;

索引特点:

  1. 索引会占用硬盘空间.

  2. 增删改操作,会牵涉索引的修改和维护, 降低了DML的效率.[缺点]

  3. PK(Primary key) UK(unique key) 主键和唯一约束的列,数据库会自动添加索引.


事务[重要]

问题:

-- 张三将工行账号60000转给李四?
account:[id,name,birth,mobile,balance]
id, name,   birth,  mobile,         balance
100 张三     ---     15533333333      60000
101 李四     ---     15566666666      600000
​
思路:
1. 将张三balance 修改为0? -60000
update account set balance = 0 where id = 100;
2. 将李四的balance 修改为  660000
update account set balance = 660000 where id = 101;
​
问题: 多个sql语句,完成一个独立功能,出现了完成一半,影响功能的实现!!!!
​
希望:
1. 转账操作多个sql执行成功    √  
2. 转账操作多个sql执行全部失败 √ 
总结: 转账中的多个sql,要么全部成功,要么全失败!----将转账中的多个sql看做一个整体.

概念: 数据库的最小执行单元,有多个sql组成的一个整体

事务中的sql执行结果: 要么全部执行成功,要么全部执行失败.

结论: 实际开发中,一个独立的功能中,包含的多个SQL,要作为一个事务来操作.

事务的使用(边界):

成功结束事务: commit(提交);-- 事务中多个sql执行生效.

失败结束事务: rollback(回滚);-- 事务中的多个sql执行失效.

类似于Java中的try-catch 

try{
    1张三将工行账号60000转给李四?
    update account set balance = 0 where id = 100;
    2. 将李四的balance 修改为  660000
    update account set balance = 660000 where id = 101;
    成功结束事务: commit 提交.
}catch(){
    失败结束事务: rollback 回滚.
}

事务的实现原理

  1. 数据库会为每个客户端都分配一个独立的回滚段(临时空间 rollback seagment), 临时存放当前客户端sql执行结果.

  2. commit: 将回滚段中的sql执行结果一次性同步到数据库中.

    rollback: 将回滚段中sql的执行结果,舍弃丢失.

事务特性 ACID: [笔试]

A (Atomic) 原子性: 事务中的多个sql语句是一个整体, 要么全部成功,要么全部失败.

C (Consistency) 一致性: (数据的合理性),事务执行前后(无论失败还是成功),最终数据是合理的.

I (Isolation) 隔离性: 事务与事务之间是相互独立的.

D (Durability) 持久性: 事务结束(成功或失败),对数据库的数据修改时永久性的.


原文地址:https://www.cnblogs.com/chenpeisong/p/9775226.html