資料庫開發(八)DML(資料操作) 事務
阿新 • • 發佈:2018-12-01
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;
}