1. 程式人生 > >mysql的檢視,事務,索引,外來鍵

mysql的檢視,事務,索引,外來鍵

檢視 建立檢視,將兩個表合成一個表,方便以後查詢,並且可以更改。          表1: students 有id,name,age欄位 表2: classes 有id,name,sex欄位 那麼如果這是想同時檢視這兩張表:用以前學過的關聯查詢的命令: select * from students inner join classes on students.id=classes.id;   現在建立檢視,在上一條命令前加: create view v_students as select * from students inner join classes on students.id=classes.id;
   
    生成的檢視就像一張表一樣 檢視檢視:show tables; select * fom 視圖表名; 刪除檢視:drop view 視圖表名; 事務 事務廣泛的運用於訂單系統、銀行系統等多種場景   所謂事務,它是一個操作序列,這些操作要麼都執行,要麼都不執行,它是一個不可分割的工作單位。例如,銀行轉帳工作:從一個帳號扣款並使另一個帳號增款,這兩個操作要麼都執行,要麼都不執行。所以,應該把他們看成一個事務。事務是資料庫維護資料一致性的單位,在每個事務結束時,都能保持資料一致性 務具有ACID特性:原子性(A,atomicity)、一致性(C,consistency)、隔離性(I,isolation)、永續性(D,durabulity)。
  • 原子性:事務內的所有操作要麼都執行,要麼都不執行,它是一個不可分割的工作單位。
  • 一致性:事務開始和結束前後,資料都滿足資料一致性約束,就是說結束後該是什麼樣就時什麼樣,而不是經過事務控制之後資料變得不滿足條件或業務規則。
  • 隔離性:比如操作同一張表時,資料庫為每一個使用者開啟的事務,不能被其他事務的操作所幹擾,事務之間不能互影響,它們必須完全的各行其道,互不可見。
  • 永續性:事務完成後,該事務內涉及的資料必須永續性的寫入磁碟保證其永續性。當然,這是從事務的角度來考慮的的永續性,從作業系統故障或硬體故障來說,這是不一定的。
  事務命令
  • 要求:表的引擎型別必須是innodb型別才可以使用事務,這是mysql表的預設引擎
  • 查看錶的建立語句,可以看到engine=innodb
      show create table students;
  • 修改資料的命令會觸發事務,包括insert、update、delete
  • 開啟事務,命令如下:begin;
    • 開啟事務後執行修改命令,變更會維護到本地快取中,而不維護到物理表中
  • 提交事務,命令如下:commit;
    • 將快取中的資料變更維護到物理表中
  • 回滾事務,命令如下:rollback;
    • 放棄快取中變更的資料,回退
  索引 資料庫中資料量很大的時候,查詢就會變得很慢, 對於使用資料庫查詢大於增刪改時, 優化方案:索引 缺點:新增的索引越多,增刪改的效能越差。
  • 檢視索引
show index from 表名;
  • 建立索引
方式一:建表時建立索引 create table create_index( id int primary key, name varchar(10) unique, age int, key (age) ); 方式二:對於已經存在的表,新增索引 如果指定欄位是字串,需要指定長度,建議長度與定義欄位時的長度一致 欄位型別如果不是字串,可以不填寫長度部分 create index 索引名稱 on 表名(欄位名稱(長度))   例: create index age_index on create_index(age); 刪除索引: drop index 索引名稱 on 表名; 設定時間: set profiling=1; 索引時間檢視: show profiles;   外來鍵foreign key
  • 如果一個實體的某個欄位指向另一個實體的主鍵,就稱為外來鍵。被指向的實體,稱之為主實體(主表),也叫父實體(父表)。負責指向的實體,稱之為從實體(從表),也叫子實體(子表)
  • 對關係欄位進行約束,當為從表中的關係欄位填寫值時,會到關聯的主表中查詢此值是否存在,如果存在則填寫成功,如果不存在則填寫失敗並報錯
語法  檢視外來鍵  show create table 表名; 新增外來鍵 要設為外來鍵的欄位必須和對應的表一一對應。 alter table students add constraint fk_students_gid foreign key (gid) references grade(gid) on delete cascade; 例: alter table students add constraint f foreign key (cls_id) references classes(id);  刪除外來鍵   show create table 表名 alter table students drop foreign key 外來鍵名字;