版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhang___gang/article/details/84339664
DML:对表数据增,删,改
- DML操作后,需要COMMIT;
INSERT:添加数据
UPDATE:更新数据,修改
- 语法:
UPDATE 表名 SET 列名=值,列名=值... WHERE 条件; --WHERE可不写
-
注:
-
如果没有条件,修改所有记录
-
条件写法同SELECT
-
eg1:修改每个员工的薪资,+1000
UPDATE s_emp SET salary=salary+1000;
--不提交不会做最后的修改
eg2:修改41号部门每个员工的薪资为2000
UPDATE s_emp SET salary=2000
WHERE dept_id=41;
DELETE:
- 语法:
DELETE FROM 表名 WHERE 条件; --WHERE可不写
- 注意
- 如果没有条件,删除表的所有数据
- WHERE条件同SELECT
- 如果数据行被别的表引用,则删除会失败
eg1:
INSERT INTO s_dept VALUES(51,'IT',1);
删除51号部门
DELETE FROM s_dept
WHERE id=51;
事务:Transaction(组合在一块的多个操作,要么都成功,要么都失败)
- 了解其作用,jdbc会涉及编程
- 是一直存在的
- 对于增删改操作,在一个事务之内的操作,
- commit:结束本次事务,把这个事务中所有的增删改操作提交
- rollback:结束本次事务,把这个事务中所有的增删改操作回滚(取消)
- 利用事务,可以把一个业务的多个操作放到一个事务中,达到要么都成功,要么都失败
事务的四个特性(ACID)
- 原子性(Atomicity):一个事务的多个操作要么都成功要么都失败
- 一致性(Consistency):事务前后数据的一致(如转账双方数据都改变)
- 隔离性(Isolution);一个事务中间过程的数据,另外一个事务无法看到
- 持久性(Durability):事务提交后的数据持久保存到数据库中,不会因为意外状况如断网断电等导致数据丢失
举例:
支付宝转账:
- 转账给某人100元
数据库操作:
- 我的余额减100
- 你的余额加100
- 一个业务的操作要么都成功,要么都失败
是务开始的边界:
- 连接到数据库,一个事务就开始了(如通过SQLPlus连接上Oracle)
- 一个事务结束,另一个事务就开始了
事务结束的边界:
- COMMIT:
- 事务正常结束,所有的数据提交数据库
- 当提交时,释放锁(没释放时,一个事务正在操作,另一个事务不允许操作)
- 在SQLPLUS中,DML操作默认需要手动提交,即COMMIT;DDL,DCL都是自动提交的
- ROLLBACK:回滚
- ·事务议程结束,所有的数据恢复到事务开始的时候
- 点击右上角的X关闭时,是异常关闭, 通过exit,quit是正常关闭
- 异常关闭,事务会回滚,正常关闭,事务会自动提交(不用COMMIT)
- 回滚到指定位置:需要指定回滚点
- 保存回滚点:SAVEPOINT 名字;
- 回滚到指定回滚点:ROLLBACK TO 名字;
- 注:回滚点之前的提交,之后的取消
编程时的一般操作:
try{
操作1
操作2
操作3
//如果都成功
COMMIT;
}catch(Exception e) {
rollback;
}