資料庫經典面試問題 核心概念

2021-08-09 02:09:43 字數 3270 閱讀 3549

改編自:

1 儲存過程

2 索引

3 事務

4 資料庫中的樂觀鎖和悲觀鎖

5 drop, delete truncate的區別

6 超鍵 候選鍵 主鍵外來鍵 區別

7檢視

8 資料庫三大正規化介紹

1 儲存過程

儲存過程是一些編譯好的sql語句

因為系統在呼叫sql的時候比較浪費時間,所以之前先將一些基本的額sql語句**進行編譯(對單錶或多表的增刪改查),然後再給**取乙個名字,在需要這個功能時去呼叫它就可以了。

優缺點:

儲存工程是編譯後的**效率高

儲存過程代替sql語句,降低網路通訊

在一定的程度確保資料安全

2 索引

索引是對資料庫中一或多個列值的排序,幫助資料庫高效獲取資料的資料結構

假如我們用模擬的方法,資料庫中的索引就相當於書籍中的目錄一樣,當我們想找到書中的摸個知識點,我們可以直接去目錄中找而不是在書中每頁的找,但是這也丟擲了索引的乙個缺點,在對資料庫修改的時候要修改索引到導致時間變多。

幾個基本的索引型別 普通索引唯一索引 主鍵索引 全文索引

索引優點:

加快檢索速度

唯一索引確保每行資料的唯一性

在使用索引的過程可以優化隱藏器,提高系統效能

索引缺點:

插入刪除 修改 維護速度下降

占用物理和資料空間

3 事務

事務(transaction)是併發控制的基本單位。事務就是一系列的操作,這些操作要麼都執行,要麼都不執行。

事務具有以下4個基本特徵:

1) 原子性(atomicity):事務是資料庫的邏輯工作單位,而且是必須是原子工作單位,對於其資料修改,要麼全部執行,要麼全部不執行。

3) 隔離性(isolation):乙個事務的執行不能被其他事務所影響。

4) 永續性(durability):乙個事務一旦提交,事物的操作便永久性的儲存在db中。即使此時再執行回滾操作也不能撤消所做的更改。

事務的語句

開始事物:begin transaction

提交事物:commit transaction

回滾事務:rollback transaction

4 資料庫中的樂觀鎖和悲觀鎖

在所以的 dbms 中,鎖是實現事務的關鍵,鎖可以保證事務的完整性和併發性。與現實生活中鎖一樣,它可以使某些資料的擁有者,在某段時間內不能使用某些資料或資料結構。當然鎖還分級別的,根據不同型別可以對資料設定不同的鎖許可權。樂觀悲觀 鎖 主要是作用在併發訪問控制

悲觀鎖 假定會發生併發衝突,遮蔽任何違反資料完整的操作

樂觀鎖 假定不會發生衝突,只有在提交操作時檢查是否違反資料的完整性

5 drop, delete truncate的區別

三者都是刪除的意思,但是三者個有些區別

delete和truncate只刪除表的資料不刪除表的結構

速度 drop > truncate > delete

想刪除部分資料時, delete 刪除時要帶上where語句

保留表而想刪除所有的資料時用truncate

6 超鍵 候選鍵 主鍵外來鍵 區別

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

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

主鍵(primary key):使用者選作元組標識的乙個候選鍵程式主鍵

外來鍵(foreign key)在乙個表中存在的另乙個表的主鍵稱此表的外來鍵

比如乙個小範圍的所有人,沒有重名的,考慮以下屬性:

身份證、姓名、性別、年齡。

身份證 唯一 所以是乙個超鍵

姓名 唯一 所以是乙個超鍵

(姓名,性別) 唯一所以是乙個超鍵

(姓名,性別,年齡)唯一 所以是乙個超鍵

--這裡可以看出,超鍵的組合是唯一的,但可能不是最小唯一的;身份證唯一而且沒有多餘屬性 所以是乙個候選鍵;姓名 唯一而且沒有多餘屬性 所以是乙個候選鍵

--這裡可以看出,候選鍵是沒有多餘屬性的超鍵

考慮輸入查詢方便性,選擇身份證為主鍵。也可以考慮習慣,選擇姓名為主鍵

--主鍵是選中的乙個候選鍵

一題搞懂什麼是候選鍵:

在sql server資料庫中,有乙個學生資訊表如下所示,在該表中不能作為候選鍵的屬性集合為( )(選擇一項)

學號 姓名 性別 年齡系別 專業

20020612 李輝 男 20 計算機 軟體開發

20060613 張明 男 18 計算機 軟體開發

20060614 王小玉 女 19 物理 力學

20060615 李淑華 女 17 生物 動物學

20060616 趙靜 男 21 化學 食品化學

20060617 趙靜 女 20 生物 植物學

a)b)

c)d)

e)可能大家不知道如何來選擇。如果這個題目我們可以正確的解答,那麼對於超鍵以及候選鍵和主鍵的概念已經有很深刻的認識了。透過概念,我們可以了解到,超鍵包含著候選鍵,候選鍵中包含著主鍵。主鍵一定是惟一的。為什麼呢?因為他的爺爺超鍵就是惟一的。我們分析一下上面的題目,abcde5個答案都可以作為超鍵,他們組合在一起的集合可以用來惟一的標識乙個實體。請注意我們的要求:候選鍵。候選鍵要求是不能包含多餘屬性的超鍵,我們看一下答案b。在答案b中,如果我們不使用姓名也可以惟一的標識一條資料實體,可以說姓名欄位在這裡是多餘的。那麼很明顯,b選項包含了多餘字段屬性。那麼這題答案應該選擇b。那麼其他的4個選項都可以作為候選鍵,假設很幸運,a)學號 被選擇作為使用者正在使用的候選鍵來惟一標識元組了,那麼他很幸運的獲得了主鍵的稱號(主鍵->候選鍵)。

7檢視

定義 檢視是一種虛擬表,可以對檢視進行增刪查改。可以將乙個表多個表組合成乙個檢視。對檢視的修改不影響基本表。

8 資料庫三大正規化介紹

1nf 欄位是最小單元,不可再分

2nf 滿足1nf 表中字段必須完全依賴全部主鍵而並非部分主鍵

3nf 滿足2nf,非主鍵外的所有字段必須互不依賴

資料庫面試問題

1 等值查詢,雜湊索引具有絕對優勢 前提是 沒有大量重複鍵值,如果大量重複鍵值時,雜湊索引的效率很低,因為存在所謂的雜湊碰撞問題 在heap表中,如果儲存的資料重複度很低 也就是說基數很大 對該列資料以等值查詢為主,沒有範圍查詢 沒有排序的時候,特別適合採用雜湊索引。何為堆表 2 b樹和b 樹掃盲?...

經典面試問題

1.對上萬個員工的年齡進行排序,時間複雜度不超過o n 空間複雜度為常數級別 特點 帶排序的值有乙個範圍 void sortage int age,int length 第i個位置存i歲的人的個數 for int i 0 i int index 0 for int i 0 ifor int j 0 ...

十個經典的資料庫面試問題

1.磁碟櫃上有14塊 73g的磁碟,資料庫為 200g 大小包括日誌檔案,如何設定磁碟 要說明這 14磁碟是怎麼用的 2.有兩伺服器群集,分別為 node1 和node2 現在要打 win200 系統補丁,打完後,要重新啟動,如何打補丁,不能影響使用者使用 要用群集的術語詳細說明 3.有乙個 a 資...