資料庫常見面試題,資料庫試題

來源:互聯網
上載者:User

資料庫常見面試題,資料庫試題
1. 主鍵 超鍵 候選索引鍵 外鍵

主    鍵:

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

超    鍵:

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

候選索引鍵:

最小超鍵,即沒有冗餘元素的超鍵。

外    鍵:

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


2.資料庫事務的四個特性及含義

資料庫事務transanction正確執行的四個基本要素。ACID,原子性(Atomicity)、一致性(Correspondence)、隔離性(Isolation)、持久性(Durability)。
原子性:整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被復原(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
一致性:在事務開始之前和事務結束以後,資料庫的完整性條件約束沒有被破壞。
隔離性:隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,運行在相同的時間內,執行 相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為序列化,為了防止事務操作間的混淆,必須序列化或序列化請 求,使得在同一時間僅有一個請求用於同一資料。
持久性:在事務完成以後,該事務所對資料庫所作的更改便持久的儲存在資料庫之中,並不會被復原。

3.視圖的作用,視圖可以更改嗎?

視圖是虛擬表,與包含資料的表不一樣,視圖只包含使用時動態檢索資料的查詢;不包含任何列或資料。使用視圖可以簡化複雜的sql操作,隱藏具體的細節,保護資料;視圖建立後,可以使用與表相同的方式利用它們。
視圖不能被索引,也不能有關聯的觸發器或預設值,如果視圖本身內有order by 則對視圖再次order by將被覆蓋。
建立視圖:create view XXX as XXXXXXXXXXXXXX;
對於某些視圖比如未使用連接子查詢分組聚集合函式Distinct Union等,是可以對其更新的,對視圖的更新將對基表進行更新;但是視圖主要用於簡化檢索,保護資料,並不用於更新,而且大部分視圖都不可以更新。

 

關於視圖的更多內容:http://www.cnblogs.com/zzwlovegfj/archive/2012/06/23/2559596.html



4.drop,delete與truncate的區別drop直接刪掉表truncate刪除表中資料,再插入時自增長id又從1開始delete刪除表中資料,可以加where字句。

(1)   DELETE語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中儲存以便進行進行復原操作。TRUNCATE TABLE 則一次性地從表中刪除所有的資料並不把單獨的刪除操作記錄記入日誌儲存,刪除行是不能恢複的。並且在刪除的過程中不會啟用與表有關的刪除觸發器。執行速度快。

(2)   表和索引所佔空間。當表被TRUNCATE 後,這個表和索引所佔用的空間會恢複到初始大小,而DELETE操作不會減少表或索引所佔用的空間。drop語句將表所佔用的空間全釋放掉。

(3)   一般而言,drop > truncate > delete

(4)   應用範圍。TRUNCATE 只能對TABLE;DELETE可以是table和view

(5)   TRUNCATE 和DELETE只刪除資料,而DROP則刪除整個表(結構和資料)。

(6)   truncate與不帶where的delete :只刪除資料,而不刪除表的結構(定義)drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger)索引(index);依賴於該表的預存程序/函數將被保留,但其狀態會變為:invalid。

(7)   delete語句為DML(data maintain Language),這個操作會被放到 rollback segment中,事務提交後才生效。如果有相應的 tigger,執行的時候將被觸發。

(8)   truncate、drop是DLL(data define language),操作立即生效,原資料不放到 rollback segment中,不能復原

(9)   在沒有備份情況下,謹慎使用 drop 與 truncate。要刪除部分資料行採用delete且注意結合where來約束影響範圍。復原段要足夠大。要刪除表用drop;若想保留表而將表中資料刪除,如果於事務無關,用truncate即可實現。如果和事務有關,或老師想觸發trigger,還是用delete。

(10) Truncate table 表名 速度快,而且效率高,因為: 
truncate table 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和交易記錄資源少。DELETE 語句每次刪除一行,並在交易記錄中為所刪除的每行記錄一項。TRUNCATE TABLE 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在交易記錄中記錄頁的釋放。 

(11) TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重設為該列的種子。如果想保留標識計數值,請改用 DELETE。如果要刪除表定義及其資料,請使用 DROP TABLE 語句。 

(12) 對於由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。由於 TRUNCATE TABLE 不記錄在日誌中,所以它不能啟用觸發器。

5.索引的工作原理及其種類
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.