1. 程式人生 > >MySql資料庫檢視與事務(九)

MySql資料庫檢視與事務(九)

檢視

  • 對於複雜的查詢,在多次使用後,維護是一件非常麻煩的事情
  • 解決:定義檢視
  • 檢視本質就是對查詢的一個封裝
  • 定義檢視
create view stuscore as 
select students.*,scores.score from scores
inner join students on scores.stuid=students.id;
  • 檢視的用途就是查詢
select * from stuscore;

 事務

  • 當一個業務邏輯需要多個sql完成時,如果其中某條sql語句出錯,則希望整個操作都退回
  • 使用事務可以完成退回的功能,保證業務邏輯的正確性
  • 事務四大特性(簡稱ACID)
    • 原子性(Atomicity):事務中的全部操作在資料庫中是不可分割的,要麼全部完成,要麼均不執行
    • 一致性(Consistency):幾個並行執行的事務,其執行結果必須與按某一順序序列執行的結果相一致
    • 隔離性(Isolation):事務的執行不受其他事務的干擾,事務執行的中間結果對其他事務必須是透明的
    • 永續性(Durability):對於任意已提交事務,系統必須保證該事務對資料庫的改變不被丟失,即使資料庫出現故障
  • 要求:表的型別必須是innodb或bdb型別,才可以對此表使用事務
  • 查看錶的建立語句
show create table students;
  • 修改表的型別
alter table '表名' engine=innodb;
  • 事務語句
開啟begin;
提交commit;
回滾rollback;

示例1

  • 步驟1:開啟兩個終端,連線mysql,使用同一個資料庫,操作同一張表
終端1:
select * from students;
------------------------
終端2:
begin;
insert into students(sname) values('張飛');
  • 步驟2
終端1:
select * from students;
  • 步驟3
終端2:
commit;
------------------------
終端1:
select * from students;

示例2

  • 步驟1:開啟兩個終端,連線mysql,使用同一個資料庫,操作同一張表
終端1:
select * from students;
------------------------
終端2:
begin;
insert into students(sname) values('張飛');
  • 步驟2
終端1:
select * from students;
  • 步驟3
終端2:
rollback;
------------------------
終端1:
select * from students;