數據庫面試常見(jiàn)問(wèn)題

時(shí)間:2022-06-28 07:11:51 數據庫操作系統 我要投稿
  • 相關(guān)推薦

數據庫面試常見(jiàn)問(wèn)題

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

數據庫面試常見(jiàn)問(wèn)題

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

  內連接:inner join on,兩表都滿(mǎn)足的組合。內連接分為等值連接,不等連接,自然連接。

  等值連接:兩表中相同的列都會(huì )出現在結果集中。

  自然連接:兩表中具體相同列表的列會(huì )合并為同一列出現在結果集中。

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

  左(外)連接:A left (outer) join B,以A表為基礎,A表的全部數據,B表有的組合,沒(méi)有的為null。

  右(外)連接:A right(outer) join B,以B表為基礎,B表的全部數據,A表有的組合,沒(méi)有的位null。

  全連接:A full (outer) join 兩表相同的組合在一起,A表有,B表沒(méi)有的數據(顯示為null),同樣B表有,A表沒(méi)有的顯示為null。

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

  2、三范式

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

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

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

  簡(jiǎn)單的說(shuō)就是:1NF表示每個(gè)屬性不可分割,2NF表示非主屬性不存在對主鍵的部分依賴(lài),3NF表示不存在非主屬性對主鍵的依賴(lài)傳遞。

  3、表的操作

  表的創(chuàng )建:create table 表名 (列名1 類(lèi)型 約束,列2 類(lèi)型 約束…)

  表的刪除: 表名

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

  束名

  插入記錄: into 表名…values…

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

  刪除記錄: from 表名 where 條件

  4、數據的完整性

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

  完整性分類(lèi):

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

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

 。3)用戶(hù)自定義完整性:針對某一具體關(guān)系數據庫中的約束條件。

  5、SQL的查詢(xún)優(yōu)化

 。1)從表連接的角度優(yōu)化:盡量使用內連接,因為內連接是兩表都滿(mǎn)足的行的組合,而外連接是以其中一個(gè)表的全部為基準。

 。2)盡量使用存儲過(guò)程代替臨時(shí)寫(xiě)SQL語(yǔ)句:因為存儲過(guò)程是預先編譯好的SQL語(yǔ)句的集合,這樣可以減少編譯時(shí)間。

 。3)從索引的角度優(yōu)化:對那些常用的查詢(xún)字段簡(jiǎn)歷索引,這樣查詢(xún)時(shí)值進(jìn)行索引掃描,不讀取數據塊。

 。4)還有一些常用的select優(yōu)化技巧:

 。5)A.只查詢(xún)那些需要訪(fǎng)問(wèn)的字段,來(lái)代替select*

  B、將過(guò)濾記錄越多的where語(yǔ)句向前移:在一個(gè)SQL語(yǔ)句中,如果一個(gè)where條件過(guò)濾的數據庫記錄越多,定位越準確,則該where條件越應該前移。

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

  索引是一個(gè)數據庫對象,使用索引,可以是數據庫程序無(wú)須對整個(gè)數據進(jìn)行掃描,就可以在其中找到目標數據,從而提高查找效率。索引的底層采用的是B樹(shù)。

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

  非聚集索引:獨立于記錄的結構,非聚集所以包含的key,且每個(gè)鍵值項都有指向該簡(jiǎn)直的數據行的指針。

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

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

 。2) 聚集索引插入,更新數據的速度比非聚集索引慢,單查詢(xún)速度更快。

 。3) 聚集索引的葉級結點(diǎn)保存的是時(shí)間的數據項,而非聚集結點(diǎn)的葉級結點(diǎn)保存的是指向數據項的指針。

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

  7、存儲過(guò)程與函數的區別

 。1)函數有返回值,存儲過(guò)程沒(méi)有返回值。

 。2) 因為存儲過(guò)程沒(méi)有返回值,所以不能將存儲過(guò)程的執行結果賦值給變量;函數有返回值類(lèi)型,調用函數時(shí),可以將函數的執行結果賦值給變量。也就是說(shuō),函數可以在select語(yǔ)句中使用,而存儲過(guò)程則不能。

【數據庫面試常見(jiàn)問(wèn)題】相關(guān)文章:

外企面試常見(jiàn)問(wèn)題07-02

面試常見(jiàn)問(wèn)題及答案07-05

護士面試常見(jiàn)問(wèn)題07-05

hr面試常見(jiàn)問(wèn)題07-05

電工面試常見(jiàn)問(wèn)題07-02

面試常見(jiàn)問(wèn)題及模板07-02

幼師面試常見(jiàn)問(wèn)題07-02

面試常見(jiàn)問(wèn)題及解答07-02

小學(xué)面試的常見(jiàn)問(wèn)題07-03

面試客服常見(jiàn)問(wèn)題07-03

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆