更新時間:2020-02-10 10:39:44 來源:動力節(jié)點 瀏覽4337次
數(shù)據(jù)庫是面試筆試的重點,所以小編特定整理了一些自己遇到的自認為有價值和他人遇到的好的面試題進行整理,希望對大家有所幫助。直接見題目吧,看看大家了解多少?
什么是數(shù)據(jù)庫的三范式?
第一范式(1NF):
字段具有原子性,不可再分。所有關(guān)系型數(shù)據(jù)庫系統(tǒng)都滿足第一范式)
數(shù)據(jù)庫表中的字段都是單一屬性的,不可再分。例如,姓名字段,其中的姓和名必
須作為一個整體,無法區(qū)分哪部分是姓,哪部分是名,如果要區(qū)分出姓和名,必須設計成兩
個獨立的字段。
第二范式(2NF):
第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必
須先滿足第一范式(1NF)。
要求數(shù)據(jù)庫表中的每個實例或行必須可以被惟一地區(qū)分。通常需要為表加上一個列,以存儲
各個實例的惟一標識。這個惟一屬性列被稱為主關(guān)鍵字或主鍵。
第二范式(2NF)要求實體的屬性完全依賴于主關(guān)鍵字。所謂完全依賴是指不能存在僅依賴
主關(guān)鍵字一部分的屬性,如果存在,那么這個屬性和主關(guān)鍵字的這一部分應該分離出來形成
一個新的實體,新實體與原實體之間是一對多的關(guān)系。為實現(xiàn)區(qū)分通常需要為表加上一個列,
以存儲各個實例的惟一標識。簡而言之,第二范式就是非主屬性非部分依賴于主關(guān)鍵字。
第三范式(3NF):
第三范式的要求如下:
滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡而言之,第三范式(3NF)要求一
個數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息。
所以第三范式具有如下特征:
1,每一列只有一個值
2,每一行都能區(qū)分。
3,每一個表都不包含其他表已經(jīng)包含的非主關(guān)鍵字信息。
例如,帖子表中只能出現(xiàn)發(fā)帖人的id,而不能出現(xiàn)發(fā)帖人的id,還同時出現(xiàn)發(fā)帖人姓名,
否則,只要出現(xiàn)同一發(fā)帖人id的所有記錄,它們中的姓名部分都必須嚴格保持一致,這就
是數(shù)據(jù)冗余
什么是數(shù)據(jù)庫事務?
單個邏輯單元執(zhí)行的一系列操作,這些操作要么全做要么全不做,是不可分割的.事務的開始和結(jié)束用戶是可以控制的,如果沒控制則由數(shù)據(jù)庫默認的劃分事務.事務具有以下性質(zhì):
(1)原子性
指一個事務要么全執(zhí)行,要么全不執(zhí)行.也就是說一個事務不可能執(zhí)行到一半就停止了.比如:你去買東西,錢付掉了,東西沒拿.這兩步必須同時執(zhí)行,要么都不執(zhí)行.
(2)一致性
指事務的運行并不改變數(shù)據(jù)庫中的一致性.比如a+b=10;a改變了,b也應該隨之改變.
(3)獨立性
兩個以上的事務不會出現(xiàn)交替運行的狀態(tài),因為這樣可能導致數(shù)據(jù)的不一致
(4)持久性
事務運行成功之后數(shù)據(jù)庫的更新是永久的,不會無緣無故的回滾.
主鍵超鍵候選鍵外鍵
主鍵:
數(shù)據(jù)庫表中對儲存數(shù)據(jù)對象予以唯一和完整標識的數(shù)據(jù)列或?qū)傩缘慕M合。一個數(shù)據(jù)列只能有一個主鍵,且主鍵的取值不能缺失,即不能為空值(Null)。
超鍵:
在關(guān)系中能唯一標識元組的屬性集稱為關(guān)系模式的超鍵。一個屬性可以為作為一個超鍵,多個屬性組合在一起也可以作為一個超鍵。超鍵包含候選鍵和主鍵。
候選鍵:
是最小超鍵,即沒有冗余元素的超鍵。
外鍵:
在一個表中存在的另一個表的主鍵稱此表的外鍵。
視圖的作用,視圖可以更改么?
視圖是虛擬的表,與包含數(shù)據(jù)的表不一樣,視圖只包含使用時動態(tài)檢索數(shù)據(jù)的查詢;不包含任何列或數(shù)據(jù)。使用視圖可以簡化復雜的sql操作,隱藏具體的細節(jié),保護數(shù)據(jù);視圖創(chuàng)建后,可以使用與表相同的方式利用它們。
視圖不能被索引,也不能有關(guān)聯(lián)的觸發(fā)器或默認值,如果視圖本身內(nèi)有orderby則對視圖再次orderby將被覆蓋。
創(chuàng)建視圖:createviewXXXasXXXXXXXXXXXXXX;
對于某些視圖比如未使用聯(lián)結(jié)子查詢分組聚集函數(shù)DistinctUnion等,是可以對其更新的,對視圖的更新將對基表進行更新;但是視圖主要用于簡化檢索,保護數(shù)據(jù),并不用于更新,而且大部分視圖都不可以更新。
執(zhí)行數(shù)據(jù)庫查詢時候,如果查詢的數(shù)據(jù)有很多,假設有1000萬條,用什么方法可以提高查詢效率?在數(shù)據(jù)庫方面或java代碼方面有什么優(yōu)化辦法?
1.在數(shù)據(jù)庫設計方面
(1)建立索引
(2)分區(qū)(比如說按時間分區(qū))
(3)選取最適用的字段屬性(盡量減少字段寬度和使用固定長度的字段)
2.在數(shù)據(jù)庫I/O方面
(1)增加緩沖區(qū)
(2)如果涉及到表的級聯(lián),最好不同的表放在不同的磁盤,以增加I/O速度
3.Sql語句方法
(1)優(yōu)化sql語句,減少比較次數(shù),可用連表查詢來代替子查詢
(2)限制返回的條目數(shù)(mysql用limit)
(3)有外鍵約束會影響插入和刪除性能,如果程序能夠保證數(shù)據(jù)的完整性,那在設計數(shù)據(jù)庫時就
去掉外鍵(比喻:就好比免檢產(chǎn)品,就是為了提高效率,充分相信產(chǎn)品的制造商)
4.在java程序方面
如果反復使用的查詢,可通過preparedstatement,因為他在運行前已經(jīng)預編譯,只要運行就Ok了.
數(shù)據(jù)庫優(yōu)化是一個重點,面試官必問!這個知識點后續(xù)小編會為進行全面的分享!
MySQL中varchar與char的區(qū)別以及varchar(50)中的50代表的涵義
(1)、varchar與char的區(qū)別char是一種固定長度的類型,varchar則是一種可變長度的類型
(2)、varchar(50)中50的涵義最多存放50個字符,varchar(50)和(200)存儲hello所占空間一樣,但后者在排序時會消耗更多內(nèi)存,因為orderbycol采用fixed_length計算col長度(memory引擎也一樣)
(3)、int(20)中20的涵義是指顯示字符的長度但要加參數(shù)的,最大為255,比如它是記錄行數(shù)的id,插入10筆資料,它就顯示00000000001~~~00000000010,當字符的位數(shù)超過11,它也只顯示11位,如果你沒有加那個讓它未滿11位就前面加0的參數(shù),它不會在前面加020表示最大顯示寬度為20,但仍占4字節(jié)存儲,存儲范圍不變;
(4)、mysql為什么這么設計對大多數(shù)應用沒有意義,只是規(guī)定一些工具用來顯示字符的個數(shù);int(1)和int(20)存儲和計算均一樣;
事務的隔離級別
數(shù)據(jù)庫事務的隔離級別有4個,由低到高依次為Readuncommitted(讀未提交)、Readcommitted(讀提交)、Repeatableread(重復讀)、Serializable(序列化),這四個級別可以逐個解決臟讀、不可重復讀、幻讀這幾類問題。
索引方面
創(chuàng)建索引的好處:創(chuàng)建唯一性索引,可以保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性。加大搜索速度,查詢性能提高,提高系統(tǒng)性能
缺點:創(chuàng)建索引和維護索引要耗費時間,這種時間隨著數(shù)據(jù)量的增加而增加。索引需要占物理空間,除了數(shù)據(jù)表占數(shù)據(jù)空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大。當對表中的數(shù)據(jù)進行增加、刪除和修改的時候,索引也要動態(tài)的維護,這樣就降低了數(shù)據(jù)的維護速度。
索引失效的情況:
1.索引不存儲null值,更準確的說,單列索引不存儲null值,復合索引不存儲全為null的值。索引不能存儲Null,所以對這列采用isnull條件時,因為索引上根本沒Null值,不能利用到索引,只能全表掃描。
2.不適合鍵值較少的列(重復數(shù)據(jù)較多的列),
3.前導模糊查詢不能利用索引(like‘%XX’或者like‘%XX%’)
4.索引失效的幾種情況
1.如果條件中有or,即使其中有條件帶索引也不會使用(這也是為什么盡量少用or的原因)要想使用or,又想讓索引生效,只能將or條件中的每個列都加上索引2.對于多列索引,不是使用的第一部分,則不會使用索引3.like查詢以%開頭4.如果列類型是字符串,那一定要在條件中將數(shù)據(jù)使用引號引用起來,否則不使用索引5.如果mysql估計使用全表掃描要比使用索引快,則不使用索引
以上就是動力節(jié)點Java培訓機構(gòu)小編介紹的“MySQL-Java數(shù)據(jù)庫筆試題及答案”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。
相關(guān)推薦