1. 程式人生 > >檢視、事物

檢視、事物

檢視

  • 對於複雜的查詢,在多個地方被使用,如果需求發生了改變,需要更改sql語句,則需要在多個地方進行修改,維護起來非常麻煩
  • 解決:定義檢視
  • 檢視本質就是對查詢的封裝
  • 定義檢視,建議以v_開頭
     create view 檢視名稱 as select語句;
  • 檢視檢視:查看錶會將所有的檢視也列出來
    show tables;
  • 刪除檢視
    drop view 檢視名稱;
    例:
    drop view v_stu_score_course;
  • 使用:檢視的用途就是查詢
    select * from v_stu_score_course;

例:
  • 學生表




  • 班級表

 


create view v_student_info as select classes.c_name as '班級', students.name as '學生' from students inner join classes on students.cls_id=classes.id order by classes.id;

 

 

 

事務

為什麼要有事務

  • 事務廣泛的運用於訂單系統、銀行系統等多種場景
  • 例如:A使用者和B使用者是銀行的儲戶,現在A要給B轉賬500元,那麼需要做以下幾件事:
      1. 檢查A的賬戶餘額>500元;
      2. A 賬戶中扣除500元;
      3. B 賬戶中增加500元;
  • 正常的流程走下來,A賬戶扣了500,B賬戶加了500,皆大歡喜。那如果A賬戶扣了錢之後,系統出故障了呢?A白白損失了500,而B也沒有收到本該屬於他的500。以上的案例中,隱藏著一個前提條件:A扣錢和B加錢,要麼同時成功,要麼同時失敗。事務的需求就在於此
  • 所謂事務,它是一個操作序列,這些操作要麼都執行,要麼都不執行,它是一個不可分割的工作單位。例如,銀行轉帳工作:從一個帳號扣款並使另一個帳號增款,這兩個操作要麼都執行,要麼都不執行。所以,應該把他們看成一個事務。事務是資料庫維護資料一致性的單位,在每個事務結束時,都能保持資料一致性

事務命令

  • 要求:表的引擎型別必須是innodb型別才可以使用事務,這是mysql表的預設引擎
  • 查看錶的建立語句,可以看到engine=innodb
show create table students;
  • 修改資料的命令會觸發事務,包括insert、update、delete

  • 開啟事務,命令如下:

    • 開啟事務後執行修改命令,變更會維護到本地快取中,而不維護到物理表中
begin;
  • 提交事務,命令如下
    • 將快取中的資料變更維護到物理表中
commit;
  • 回滾事務,命令如下:
    • 放棄快取中變更的資料
rollback;