COMMIT 是提交你的DML操作.
ROLLBACK 是取消你的DML操作.
DML操作主要指一些插数据\更新数据的操作,你的操作在没有COMMIT和ROLLBACK前,都还在本机的SESSION中,还没有更新至数据库。
1、首先commit和rollback是在进行insert、update、delete语句完成后需要做的操作(即对表中的记录进行修改),而select则不需要。
为了防止你的操作有误,执行完以上三种语句后,数据库没有直接把结果保存,
如果确认无误则可以commit(提交),如果有误(或反悔)可以rollback(回滚)
2、DML可以回滚,DDL不能回滚
只有DML才需要手动commit
DDL语句,它是默认提交的,所以rollback没有用
commit 和 rollback 从最终结果上讲是相反的。
a)、commit 将数据的变化永久保留
b)、rollback 将变化之前的数据“还原回去”
c)、一旦发出commit了 就不能rollback了。(但是如果你想恢复数据的话还是有办法的flashback 是可以的)
举例讲:
update a set b=1 where b=2;
commit 的作用是将这个结果永久化。
rollback 的作用相当于 update a set b=2 where b = 1 后 再commit;
什么时候使用commit和rollback?
SQL语言分为五大类:
DDL(数据定义语言) - Create、Alter、Drop 这些语句自动提交,无需用Commit提交。
DQL(数据查询语言) - Select 查询语句不存在提交问题。
DML(数据操纵语言) - Insert、Update、Delete 这些语句需要Commit才能提交。
DTL(事务控制语言) - Commit、Rollback 事务提交与回滚语句。
DCL(数据控制语言) - Grant、Revoke 授予权限与回收权限语句。