1. 程式人生 > >有關資料庫的基礎知識就都在這裡了

有關資料庫的基礎知識就都在這裡了

今天面試,資料庫好多忘了,面試官還逮著問,尷尬得不行,準備好好整理一下相關基礎的知識

一、表的基本構成

主鍵(primary key):表中某一個屬性組合能唯一標識一條記錄,該屬性組就是一個主鍵

外來鍵(foreign key):在一個表中存在的另一個表的主鍵為此表的外來鍵

超鍵(super key):在關係中能唯一標識元組的屬性集稱為關係模式的超鍵

候選鍵(candidate key):不含有多餘屬性的超鍵稱為候選鍵

 

增刪改查就完事

 

 

四、資料庫事務

資料庫事務,即資料庫執行的功能的過程,等同於作業系統當中的程序,為了讓事務能夠順利準確的完成,需要實現四個特性

1.原子性

    原子性是指事務包含的所有操作要麼全部成功,要麼全部失敗回滾,不可能停滯在中間環節。

2.一致性

    一致性指一個事務執行之前和執行之後都必須處於一致性狀態,比如A向B轉賬,不可能A扣了錢,B卻沒收到。

3.隔離性

    同一時間,只允許一個事務請求同一資料,不同的事務之間彼此沒有任何干擾。

4.永續性

    永續性是指一個事務對資料庫中的資料的改變是永久性的,不能回滾。

 

事務存在的問題

1.髒讀:一個事務處理過程裡讀取了另一個未提交的事務中的資料。

2.不可重複讀:事務 A 讀取一資料,事務 B 在事務A讀取的過程中對資料作了更新,導致事務A多次讀取資料時結果不一致。

3.虛讀:事務 A 修改表資料,事務 B 在事務A修改的過程中插入一條新資料,導致事務A像是沒有修改完一樣。

解決不可重複讀的問題只需鎖住滿足條件的行,解決幻讀需要鎖表

 

MySQL事務隔離級別

事務隔離級別 髒讀 不可重複讀 幻讀
讀未提交(read-uncommitted)
讀提交(read-committed)
可重複讀(repeatable-read)
序列化(serializable)

serializable:通過給每個資料行與表上鎖,強行讓事務的處理序列化,可以解決三大問題但也會導致大量超時與鎖競爭現象,故而不常用。

repeatable-read:開始讀取資料(事務開啟)時,不再允許修改操作,可以解決不可重複讀問題但還存在幻讀現象。

read-committed:就是一個事務要等另一個事務提交後才能讀取資料,只能解決髒讀問題。

read-uncommitted:沒用,啥也幹不了。

MySQL資料庫中預設的隔離級別為Repeatable read (可重複讀)。

 

在MySQL資料庫中檢視當前和設定事務的隔離級別:

select @@tx_isolation;

set  [glogal | session]  transaction isolation level 隔離級別名稱;
set tx_isolation=’隔離級別名稱;’

 

Loading......