更新時(shí)間:2021-01-27 17:33:57 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1476次
MySQL作為目前最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,往往是我們學(xué)習(xí)數(shù)據(jù)庫(kù)的首選。無(wú)論是在大學(xué)的專(zhuān)門(mén)課程還是在相關(guān)培訓(xùn)機(jī)構(gòu)的培訓(xùn)課程,MySQL都是非常重要的內(nèi)容。我們?cè)谇舐毭嬖嚨倪^(guò)程中,也會(huì)遇到各種各樣的MySQL面試題,本文我們?yōu)榇蠹医榻B10道經(jīng)典MySQL面試題,為大家排憂(yōu)解難。
1.索引的基本原理
索引用來(lái)快速地尋找那些具有特定值的記錄。如果沒(méi)有索引,一般來(lái)說(shuō)執(zhí)行查詢(xún)時(shí)遍歷整張表。
索引的原理很簡(jiǎn)單,就是把無(wú)序的數(shù)據(jù)變成有序的查詢(xún)。
1)把創(chuàng)建了索引的列的內(nèi)容進(jìn)行排序
2)對(duì)排序結(jié)果生成倒排表
3)在倒排表內(nèi)容上拼上數(shù)據(jù)地址鏈
4)在查詢(xún)的時(shí)候,先拿到倒排表內(nèi)容,再取出數(shù)據(jù)地址鏈,從而拿到具體數(shù)據(jù)
2.事務(wù)的基本特性有哪些?
事務(wù)基本特性ACID分別是:
原子性:指的是一個(gè)事務(wù)中的操作要么全部成功,要么全部失敗。
一致性:指的是數(shù)據(jù)庫(kù)總是從一個(gè)一致性的狀態(tài)轉(zhuǎn)換到另外一個(gè)一致性的狀態(tài)。比如A轉(zhuǎn)賬給B100塊錢(qián),假設(shè)中間sql執(zhí)行過(guò)程中系統(tǒng)崩潰A也不會(huì)損失100塊,因?yàn)槭聞?wù)沒(méi)有提交,修改也就不會(huì)保存到數(shù)據(jù)庫(kù)。
隔離性:指的是一個(gè)事務(wù)的修改在最終提交前,對(duì)其他事務(wù)是不可見(jiàn)的。
持久性:指的是一旦事務(wù)提交,所做的修改就會(huì)永久保存到數(shù)據(jù)庫(kù)中。
3.MySQL由哪些部分組成, 各自有什么功能?
1、Server
1)連接器: 管理連接, 權(quán)限驗(yàn)證
2)分析器: 詞法分析, 語(yǔ)法分析
3)優(yōu)化器: 執(zhí)行計(jì)劃生成, 索引的選擇
4)執(zhí)行器: 操作存儲(chǔ)引擎, 返回執(zhí)行結(jié)果
2、存儲(chǔ)引擎: 存儲(chǔ)數(shù)據(jù), 提供讀寫(xiě)接口
4.唯一索引比普通索引快嗎, 為什么?
唯一索引不一定比普通索引快, 還可能慢。
查詢(xún)時(shí), 在未使用limit 1的情況下, 在匹配到一條數(shù)據(jù)后, 唯一索引即返回, 普通索引會(huì)繼續(xù)匹配下一條數(shù)據(jù), 發(fā)現(xiàn)不匹配后返回. 如此看來(lái)唯一索引少了一次匹配, 但實(shí)際上這個(gè)消耗微乎其微.
更新時(shí), 這個(gè)情況就比較復(fù)雜了. 普通索引將記錄放到change buffer中語(yǔ)句就執(zhí)行完畢了. 而對(duì)唯一索引而言, 它必須要校驗(yàn)唯一性, 因此, 必須將數(shù)據(jù)頁(yè)讀入內(nèi)存確定沒(méi)有沖突, 然后才能繼續(xù)操作. 對(duì)于寫(xiě)多讀少的情況, 普通索引利用change buffer有效減少了對(duì)磁盤(pán)的訪(fǎng)問(wèn)次數(shù), 因此普通索引性能要高于唯一索引.
5.MyISAM和InnoDB的區(qū)別有哪些
1)InnoDB支持事務(wù), MyISAM不支持。
2)InnoDB支持行級(jí)鎖, MyISAM支持表級(jí)鎖。
3)InnoDB支持多版本并發(fā)控制(MVVC), MyISAM不支持。
4)InnoDB支持外鍵, MyISAM不支持。
5)MyISAM支持全文索引, InnoDB部分版本不支持(但可以使用Sphinx插件)
6.數(shù)據(jù)庫(kù)的三大范式
第一范式: 屬性不可再分.
第二范式: 在一范式的基礎(chǔ)上, 要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分. 通常需要為表加上一個(gè)列, 以存儲(chǔ)各個(gè)實(shí)例的惟一標(biāo)識(shí). 這個(gè)惟一屬性列被稱(chēng)為主關(guān)鍵字或主鍵.
第三范式: 在二范式的基礎(chǔ)上, 要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主關(guān)鍵字信息. 所以第三范式具有如下特征:1). 每一列只有一個(gè)值. 2). 每一行都能區(qū)分. 3). 每一個(gè)表都不包含其他表已經(jīng)包含的非主關(guān)鍵字信息.
7.視圖有哪些特點(diǎn)?
1)視圖的列可以來(lái)自不同的表,是表的抽象和在邏輯意義上建立的新關(guān)系。
2)視圖是由基本表(實(shí)表)產(chǎn)生的表(虛表)。
3)視圖的建立和刪除不影響基本表。
4)對(duì)視圖內(nèi)容的更新(添加,刪除和修改)直接影響基本表。
5)當(dāng)視圖來(lái)自多個(gè)基本表時(shí),不允許添加和刪除數(shù)據(jù)。
8.SQL 約束有哪幾種?
NOT NULL: 用于控制字段的內(nèi)容一定不能為空(NULL)。
UNIQUE: 控件字段內(nèi)容不能重復(fù),一個(gè)表允許有多個(gè) Unique 約束。
PRIMARY KEY: 也是用于控件字段內(nèi)容不能重復(fù),但它在一個(gè)表只允許出現(xiàn)一個(gè)。
FOREIGN KEY: 用于預(yù)防破壞表之間連接的動(dòng)作,也能防止非法數(shù)據(jù)插入外鍵列,因?yàn)樗仨毷撬赶虻哪莻€(gè)表中的值之一。
CHECK: 用于控制字段的值范圍。
9.六種關(guān)聯(lián)查詢(xún)
交叉連接(CROSS JOIN)
內(nèi)連接(INNER JOIN)
外連接(LEFT JOIN/RIGHT JOIN)
聯(lián)合查詢(xún)(UNION與UNION ALL)
全連接(FULL JOIN)
交叉連接(CROSS JOIN)
10.超鍵、候選鍵、主鍵、外鍵分別是什么?
超鍵:在關(guān)系中能唯一標(biāo)識(shí)元組的屬性集稱(chēng)為關(guān)系模式的超鍵。一個(gè)屬性可以為作為一個(gè)超鍵,多個(gè)屬性組合在一起也可以作為一個(gè)超鍵。超鍵包含候選鍵和主鍵。
候選鍵:是最小超鍵,即沒(méi)有冗余元素的超鍵。
主鍵:數(shù)據(jù)庫(kù)表中對(duì)儲(chǔ)存數(shù)據(jù)對(duì)象予以唯一和完整標(biāo)識(shí)的數(shù)據(jù)列或?qū)傩缘慕M合。一個(gè)數(shù)據(jù)列只能有一個(gè)主鍵,且主鍵的取值不能缺失,即不能為空值(Null)。
外鍵:在一個(gè)表中存在的另一個(gè)表的主鍵稱(chēng)此表的外鍵。
以上就是為大家介紹的10道經(jīng)典MySQL面試題,希望能夠在我們求職面試的過(guò)程中起到小小的幫助,當(dāng)然主要還是靠我們自己的知識(shí)積累。在本站的MySQL教程里面,有著MySQL知識(shí)體系的全面講解課程,幫助我們快速掌握MySQL的整個(gè)知識(shí)體系,無(wú)懼任何面試的挑戰(zhàn)!
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)