閱讀屋>資料庫作業系統> 資料庫面試常見問題

資料庫面試常見問題

資料庫面試常見問題

  資料庫面試常見問題有哪些呢?你想知道嗎?下面是小編整理的資料庫面試常見問題,歡迎大家閱讀!

  1、SQL的表連線方式有哪些?

  SQL中連線按結果集分為:內連線,外連線,交叉連線

  內連線:inner join on,兩表都滿足的組合。內連線分為等值連線,不等連線,自然連線。

  等值連線:兩表中相同的列都會出現在結果集中。

  自然連線:兩表中具體相同列表的列會合併為同一列出現在結果集中。

  外連線:分為左(外)連線,右(外)連線,全連線

  左(外)連線:A left (outer) join B,以A表為基礎,A表的全部資料,B表有的組合,沒有的為null。

  右(外)連線:A right(outer) join B,以B表為基礎,B表的全部資料,A表有的組合,沒有的位null。

  全連線:A full (outer) join 兩表相同的組合在一起,A表有,B表沒有的資料(顯示為null),同樣B表有,A表沒有的顯示為null。

  交叉連線:cross join,就是笛卡爾乘積。

  2、三正規化

  1NF:表中的欄位都是單一屬性,不再可分。

  2NF:在1NF的基礎上,表中所有的非主屬性都必須完全依賴於任意一組候選鍵,不能僅依賴於候選鍵中的某個屬性。

  3NF:在2NF的基礎上,表中所有的屬性都不依賴其他非主屬性。

  簡單的說就是:1NF表示每個屬性不可分割,2NF表示非主屬性不存在對主鍵的部分依賴,3NF表示不存在非主屬性對主鍵的依賴傳遞。

  3、表的操作

  表的建立:create table 表名 (列名1 型別 約束,列2 型別 約束…)

  表的刪除: 表名

  表的更改(結構的更改,不是記錄的更新):alter table 表名 add|drop 列名|約

  束名

  插入記錄: into 表名…values…

  更新記錄:表名 set 列名=值 where 條件

  刪除記錄: from 表名 where 條件

  4、資料的完整性

  資料完整性指的是儲存在資料庫中的資料的一致性和準確性。

  完整性分類:

  (1)實體完整性:主鍵值必須唯一且非空。(主鍵約束)

  (2) 引用完整性(也叫參照完整性):外來鍵要麼為空,要麼引用主表中存在的記錄。(外來鍵約束)。

  (3)使用者自定義完整性:針對某一具體關係資料庫中的約束條件。

  5、SQL的查詢最佳化

  (1)從表連線的角度最佳化:儘量使用內連線,因為內連線是兩表都滿足的行的組合,而外連線是以其中一個表的全部為基準。

  (2)儘量使用儲存過程代替臨時寫SQL語句:因為儲存過程是預先編譯好的SQL語句的集合,這樣可以減少編譯時間。

  (3)從索引的角度最佳化:對那些常用的查詢欄位簡歷索引,這樣查詢時值進行索引掃描,不讀取資料塊。

  (4)還有一些常用的'select最佳化技巧:

  (5)A.只查詢那些需要訪問的欄位,來代替select*

  B、將過濾記錄越多的where語句向前移:在一個SQL語句中,如果一個where條件過濾的資料庫記錄越多,定位越準確,則該where條件越應該前移。

  6、索引的作用,聚集索引與非聚集索引的區別

  索引是一個數據庫物件,使用索引,可以是資料庫程式無須對整個資料進行掃描,就可以在其中找到目標資料,從而提高查詢效率。索引的底層採用的是B樹。

  聚集索引:根據記錄的key再表中排序資料行。

  非聚集索引:獨立於記錄的結構,非聚集所以包含的key,且每個鍵值項都有指向該簡直的資料行的指標。

  聚集索引與非聚集索引的區別:

  (1)聚集索引的物理儲存按索引排序,非聚集所以的物理儲存不按索引排序。

  (2) 聚集索引插入,更新資料的速度比非聚集索引慢,單查詢速度更快。

  (3) 聚集索引的葉級結點儲存的是時間的資料項,而非聚集結點的葉級結點儲存的是指向資料項的指標。

  (4)一個表只能有一個聚集索引(因為只有一種排序方式),但可以有多個非聚集索引。

  7、儲存過程與函式的區別

  (1)函式有返回值,儲存過程沒有返回值。

  (2) 因為儲存過程沒有返回值,所以不能將儲存過程的執行結果賦值給變數;函式有返回值型別,呼叫函式時,可以將函式的執行結果賦值給變數。也就是說,函式可以在select語句中使用,而儲存過程則不能。

【資料庫面試常見問題】相關文章: