【mysql】事務、視圖、索引

事務

事務(transaction)是作爲單個邏輯工作單位執行的一系列操作,多個操作作爲一個整體向系統提交,要麼都執行、要麼都不執行。

事務的ACID屬性

原子性:(Atomicity);

事務是一個完整的操作,事務的各步操作時不可分的(原子的),要麼都執行、要麼都不執行。

一致性(Consistency):

當事務完成時,數據必須處於一致狀態

隔離性(Isolation):

併發事務之間彼此隔離、獨立,它不應以任何方式依賴於或影響其它事務

持久性(Durability):

事務完成後,它對數據庫的修改被永久保持

創建事務

開始時,開啓事務 or 關閉默認的自動提交:

begin; 
/*或者*/
start transaction;

提交事務:

這個語句標誌一個事務會成功提交,數據保存到數據庫的數據文件中,並釋放連接時佔用的資源。

commit

回滾事務:

取消自事務起始點到該語句的所有數據更新操作,將數據狀態回滾到事務開始前,並釋放事務控制的資源。

rollback

示例:

begin;
# sql語句
commit;
begin;
# sql語句
rollback;

視圖

視圖是一種虛擬表,它的行和列來自查詢中引用的表,在執行時,它直接顯示來自表中的數據,自己本身並不存儲數據。它是保存在數據庫中的select查詢。

作用:

篩選表中的行
防止未經許可的用戶訪問敏感數據
降低數據庫的複雜程度
將多個物理數據庫抽象爲一個邏輯數據庫

使用視圖:

創建視圖:

  create view view_Name as <select子句>;

刪除視圖:

drop view if exists view_Name;

查看視圖

select * from view_Name;

注意事項

對視圖數據進行添加、更新和刪除操作直接影響所引用表中的數據

當視圖數據來自多個表時,不允許添加和刪除數據

一個視圖可以嵌套另一個視圖

視圖中可以使用多個表

索引

索引是一種有效的組合數據的方式,爲快速查找到指定記錄,對複雜的查詢語句進行優化,加速查詢

索引的分類

普通索引:

MySQL中基本索引類型,沒有什麼限制,允許在定義索引的列中插入重複值和空值,純粹爲了查詢數據更快一點。

唯一索引:

索引列中的值必須是唯一的,但是允許爲空值。

主鍵索引:

在數據庫關係圖中爲表定義一個主鍵將自動創建主鍵索引,主鍵索引是唯一索引的特殊類型。主鍵索引要求主鍵中的每個值是非空、唯一的,當在查詢中使用主鍵索引時,它還允許快速訪問數據。

複合索引:

在表中的多個字段組合上創建的索引,只有在查詢條件中使用了這些字段的左邊字段時,索引纔會被使用,使用組合索引時遵循最左前綴集合。

全文索引:

全文索引可以在char、varchar或text類型的列上創建,主要用於在大量文本文字中搜索字符串,此時使用全文索引的效率將大大高於使用SQL的like關鍵字的效率。

使用索引

創建索引:

create [unique|fulltext|spatial] index index_name on tableName(colum_Name[length]);

在哪些列建立索引:

  • 頻繁搜索的列;
  • 經常用作查詢的列;
  • 經常排序、分組的列;
  • 經常用作連接的列(主鍵/外鍵)

刪除索引:

drop index tableName.index_name;

刪除表,該表的所有索引將同時被刪除
刪除表中的列,如果要刪除的列爲索引的組成部分,則該列也會從索引中刪除,#如果組成索引的列都被刪除,則整個索引都將被刪除。

查看索引:

show index from tableName;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章