1. 程式人生 > >資料庫開發(八)DML(資料操作) 事務

資料庫開發(八)DML(資料操作) 事務

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元

資料庫操作:

  1. 我的餘額減100
  2. 你的餘額加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;
}