Oracle基础学习---DML与事务控件

数据操作语言DML(Data Manipulation Language)用于操作数据库中的数据
包括:
1. 插入数据insert
2. 修改数据update
3. 删除数据delete
4. 数据合并merge

表间数据COPY
insert into A(id, name) select id, name from B
子查询表B的类型和要插入的表A中的类型相匹配

merge语句
用于进行数据合并---根据条件在表中执行数据的修改或插入操作,如果要插入的记录在目标表中已经存在,则执行更新操作、否则执行插入操作。
merge into 表名A
using(表名B) //表,视图,子查询
on (连接关系)
when matched then
update set 表名A的字段=表名B的字段
when not matched then
insert (表名A的字段) values (表名B的字段)



事务
数据库事务组成:
0~多条DML语句
1条DDL(Data Define Language)语句
1条DCL(Data Control Language)语句

事务控制:
通过将一组相关操作组合为一个要么全部成功、要么全部失败的逻辑工作单元,以简化错误恢复、提高应用程序的可靠性。

事务必须满足ACID属性:
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)


事务开始与结束
开始:
第一条可执行的语句
结束:
1. 遇到commit 或 rollback 语句
2. 遇到DDL 或 DCL 语句
3. 用户会话结束
4. 系统崩溃

事务的提交和回滚
1. 显式的提交和回滚操作是为了更好地保证数据的一致性。
2. 下述情况下事务会被自动提交
~执行一个DDL 语句
~执行一个DCL 语句
~正常结束会话
3. 会话异常终止/系统崩溃时事务会被自动回滚



提交/回滚前数据状态
1. 当前事务中数据状态的改变是可以恢复的
2. 当前事务中的DML 操作结果只对当前用户(会话)可见,其它用户(会话)看不到当前事务中数据状态的改变,直到当前事务结束。
3. 当前事务中的DML 语句所涉及到的行被锁定,其他用户(会话)不能对其行进行修改。

事务提交后数据状态
1. 数据的修改永久生效、不可以再撤消
2. 数据以前的状态永久性丢失、无法恢复
3. 所有的用户(会话)都将看到操作后的结果
4. 记录锁被释放,其它用户(会话)可对这些进行修改操作
5. 事务中的保存点(savepoints)清除

回滚后数据状态
1. 数据的修改被撤消
2. 数据恢复到修改前的状态
3. 记录锁被释放

保存点
通过保存点在当前的事务中创建标记,将来可回退到指定的标记(保存点)外,实现事务的部分回滚
例:
inser into A values(1,'Tome');
inser into A values(2,'Trye');
savepoint p1
inser into A values(3,'Merry');

1. select * from A //显示3条记录
2. rollback to p1;select * from A;//显示p1前的两条记录


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

meteor_730

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值