mysql事務1

##mysql數據庫事務###

1. 主鍵 超鍵 候選鍵 外鍵

 

主 鍵:數據庫表中對儲存數據對象予以唯一和完整標識的數據列或屬性的組合。一個數據列只能有一個主鍵,且主鍵的取值不能缺失,即不能爲空值(Null)。

 

超 鍵:在關係中能唯一標識元組的屬性集稱爲關係模式的超鍵。一個屬性可以爲作爲一個超鍵,多個屬性組合在一起也可以作爲一個超鍵。超鍵包含候選鍵和主鍵。

 

候選鍵:是最小超鍵,即沒有冗餘元素的超鍵。

 

外 鍵:在一個表中存在的另一個表的主鍵稱此表的外鍵。

 

2.數據庫事務的四個特性及含義

 

數據庫事務transanction正確執行的四個基本要素。

ACID,原子性(Atomicity)、一致性(Correspondence)、隔離性(Isolation)、持久性(Durability)。

原子性:整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。

一致性:在事務開始之前和事務結束以後,數據庫的完整性約束沒有被破壞。

隔離性:隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,運行在相同的時間內,執行 相同的功能,事務的隔離性將確保每一事務在系統中認爲只有該事務在使用系統。這種屬性有時稱爲串行化,爲了防止事務操作間的混淆,必須串行化或序列化請 求,使得在同一時間僅有一個請求用於同一數據。

持久性:在事務完成以後,該事務所對數據庫所作的更改便持久的保存在數據庫之中,並不會被回滾。

 

 

視圖的作用,視圖可以更改麼?

1.視圖的創建

第一類:create view v as select * from table;

 

第二類、基於不同數據庫

這種情況只比上面的sql語句多一個數據庫的名字,如下:

create view 數據庫1.v as (select * from 數據庫1.table1) union all (select * from 數據庫2.table2);

create view 數據庫2.v as (select * from 數據庫1.table1) union all (select * from 數據庫2.table2);

 

如果執行第一個sql將在數據庫1下建立視圖,反之亦然;

 

視圖的作用?

視圖是虛擬的表,與包含數據的表不一樣,視圖只包含使用時動態檢索數據的查詢不包含任何列或數據。使用視圖可以簡化複雜的sql操作,隱藏具體的細節,保護數據;視圖創建後,可以使用與表相同的方式利用它們。視圖不能被索引,也不能有關聯的觸發器或默認值,如果視圖本身內有order by 則對視圖再次order by將被覆蓋。

 

視圖可以更改麼?

對於某些視圖比如未使用聯結子查詢分組聚集函數Distinct 、Union等,是可以對其更新的,對視圖的更新將對基表進行更新;但是視圖主要用於簡化檢索,保護數據,並不用於更新,而且大部分視圖都不可以更新

 

4、drop,delete與truncate的區別

一、不同點

1.truncate table 和 delete只刪除記錄不刪除表的結構,drop語句將刪除表的結構依賴的約束(constrain),觸發器(trigger),索引(index);drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger),索引(index);依賴於該表的存儲過程/函數將保留,但是變爲invalid狀態

2.truncate之後的自增字段從頭開始計數了,而delete的仍保留原來的最在數值。

 

二、總結:

1.在速度上,一般來說,drop> truncate > delete

2.在使用drop和truncate時一定要注意,雖然可以恢復,但爲了減少麻煩,還是要慎重。

3.如果想刪除部分數據用delete,注意帶上where子句,回滾段要足夠大;

如果想刪除表,當然用drop;

如果想保留表而將所有數據刪除,如果和事務無關,用truncate即可;

如果和事務有關,或者想觸發trigger,還是用delete

如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據

 

5.索引的工作原理及其種類

 

數據庫索引,是數據庫管理系統中一個排序的數據結構,協助快速查詢、更新數據庫表中數據索引的實現通常使用B樹及其變種B+樹

 

MySQL索引的建立對於MySQL的高效運行是很重要的,索引可以大大提高MySQL的檢索速度。索引也是一張表,該表保存了主鍵與索引字段,並指向實體表的記錄。上面都在說使用索引的好處,但過多的使用索引將會造成濫用。

因此索引也會有它的缺點:雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對錶進行INSERT、UPDATE和DELETE。因爲更新表時,MySQL不僅要保存數據,還要保存一下索引文件。建立索引會佔用磁盤空間的索引文件。 

ALTER table tableName ADD INDEX indexName(columnName)

 

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