資料庫的一些基本概念(鍵 事務)

2022-05-02 13:39:10 字數 1342 閱讀 7471

注:

元組(tuple)是關聯式資料庫中的基本概念,關係是一張表,表中的每行(即資料庫中的每條記錄)就是乙個元組,每列就是乙個屬性。 在二維表裡,元組也稱為行。

取個例子: 

字段(卡號、姓名、身份證號、年齡、病人編號)

超鍵: 卡號、身份證號、病人編號、卡號和身份證號、卡號和病人編號等。

候選鍵: 卡號、身份證號、病人編號

主鍵:卡號、身份證號、病人編號其中之一,主鍵不能為空。

字段:卡號、聯絡人姓名、聯絡人**

卡號就是表一的外來鍵。

☆就是被繫結在一起作為乙個邏輯單元的sql語句分組,如果任何乙個語句操作失敗那麼整個操作就被失敗,以後操作就會回滾到操作前狀態。

☆事務具有以下四大特性(簡稱acid):即原子性,一致性,隔離性和永續性。

三、事務的隔離

首先,來看一下不考慮事務的隔離性會發生的情況。

髒讀是指在乙個事務處理過程裡讀取了另乙個未提交的事務中的資料。

當乙個事務正在多次修改某個資料,而在這個事務中這多次的修改都還未提交,這時乙個併發的事務來訪問該資料,就會造成兩個事務得到的資料不一致。

不可重複讀是指在對於資料庫中的某個資料,乙個事務範圍內多次查詢卻返回了不同的資料值,這是由於在查詢間隔,被另乙個事務修改並提交了。

例如事務t1在讀取某一資料,而事務t2立馬修改了這個資料並且提交事務給資料庫,事務t1再次讀取該資料就得到了不同的結果,傳送了不可重複讀。

幻讀是事務非獨立執行時發生的一種現象。例如事務t1對乙個表中所有的行的某個資料項做了從「1」修改為「2」的操作,這時事務t2又對這個表中插入了一行資料項,而這個資料項的數值還是為「1」並且提交給資料庫。  

而操作事務t1的使用者如果再檢視剛剛修改的資料,會發現還有一行沒有修改,其實這行是從事務t2中新增的,就好像產生幻覺一樣,這就是發生了幻讀。

不可重複讀和髒讀的區別是,髒讀是某一事務讀取了另乙個事務未提交的髒資料,而不可重複讀則是讀取了前一事務提交的資料。

幻讀和不可重複讀都是讀取了另一條已經提交的事務(這點就髒讀不同),所不同的是不可重複讀查詢的都是同乙個資料項,而幻讀針對的是一批資料整體(比如資料的個數)。

mysql資料庫為我們提供的四種隔離級別:

serializable (序列化):可避免髒讀、不可重複讀、幻讀的發生。

repeatable read (可重複讀):可避免髒讀、不可重複讀的發生。

read committed (讀已提交):可避免髒讀的發生。

read uncommitted (讀未提交):最低級別,任何情況都無法保證。

oracle資料庫中,只支援serializable (序列化)級別和read committed (讀已提交)這兩種級別。

資料庫一些基本概念

發現自己對資料庫的基本概念還是很缺乏,雖然都是比較基本的。很多資料庫功能必須用t sql語句實現。1 儲存過程 stored procedure 儲存過程是為完成特定的功能而匯集在一起的一組sql 程式語句,經編譯後儲存在資料庫中的sql 程式。舉個例子 create procedure sum o...

資料庫1 資料庫的一些基本概念

本節引言 本節主要介紹一些資料庫的名稱的一些基本概念,以便大家對資料庫有基本的了解 1.資料庫 與 資料庫管理系統 答 資料庫,簡單理解就是 儲存資料的倉庫 而資料庫管理系統 database management system,dbms 見名知意,就是管理前者的系統,現在dbms有很多,比較通用的...

MySQL資料庫 資料庫的一些基本概念

網路上關於資料庫的配置的文章有很多了,這裡就只記錄一些可能出現的問題 1 安裝完成資料庫之後,需要開啟3306的埠 2 mysql8.0修改密碼的語句和5.0版本的有點不一樣,在網上找的時候得看對了版本 3 遠端登入要記得關閉服務端的防火牆 4 workbench只是乙個視覺化的工具 1 伺服器端 ...