1. 程式人生 > >11-撩課-Java面試寶典-第十一篇

11-撩課-Java面試寶典-第十一篇

學習地址:
撩課-JavaWeb系列1之基礎語法-前端基礎
撩課-JavaWeb系列2之XML
撩課-JavaWeb系列3之MySQL
撩課-JavaWeb系列4之JDBC
撩課-JavaWeb系列5之web伺服器-idea

86.如何獲得高效的資料庫邏輯結構?

從關係資料庫的表中
刪除冗餘資訊的過程
稱為資料規範化,
是得到高效的關係型資料庫表的邏輯結構
最好和最容易的方法。

規範化資料時應執行以下操作:
1.將資料庫的結構精簡為最簡單的形式
2.從表中刪除冗餘值
3.標識所有依賴與其他資料的資料
規範化過程有幾個階段,
分別稱作第一正規化(1NF)、
第二正規化(2NF)、
第三正規化(3NF)、
第四正規化(4NF)
以及第五正規化(5NF)。
對於所有的實際應用,
3NF已經足夠了。

87.資料庫三正規化是什麼?

第一正規化(1NF):
欄位具有原子性,不可再分。
所有關係型資料庫系統
都滿足第一正規化)

資料庫表中的欄位都是單一屬性的,
不可再分。
例如,姓名欄位,
其中的姓和名必須作為一個整體,
無法區分哪部分是姓,
哪部分是名,
如果要區分出姓和名,
必須設計成兩個獨立的欄位。


第二正規化(2NF):
第二正規化(2NF)是在第一正規化(1NF)的基礎上
建立起來的,即滿足第二正規化(2NF)
必須先滿足第一正規化(1NF)。

要求資料庫表中的每個例項
或行必須可以被惟一地區分。
通常需要為表加上一個列,
以儲存各個例項的惟一標識。
這個惟一屬性列被
稱為主關鍵字或主鍵。

 
第二正規化(2NF)要求實體的屬性
完全依賴於主關鍵字。
所謂完全依賴是指不能存在
僅依賴主關鍵字一部分的屬性,
如果存在,
那麼這個屬性和主關鍵字的這一部分
應該分離出來形成一個新的實體,
新實體與原實體之間是一對多的關係。
為實現區分通常需要為表加上一個列,
以儲存各個例項的惟一標識。
簡而言之,
第二正規化就是非主屬性
非部分依賴於主關鍵字。


第三正規化(3NF)
是在第二正規化的基礎上建立起來的,
即滿足第三正規化(3NF)
必須先滿足第二正規化(2NF)。

第三正規化(3NF)要求
非主關鍵字不能依賴於
其他非主關鍵字。
即非主關鍵字之間
不能有函式(傳遞)依賴關係.
即不能從一個表的某個欄位
推出該表的另一個欄位。 

滿足三正規化的設計,
基本可以解決資料冗餘、
插入異常、
更新異常、
刪除異常等資料儲存問題。

88.SQL語句分為哪幾種?

SQL語句主要可以劃分為以下幾類:

DDL(Data Definition Language):
資料定義語言,
定義對資料庫物件(庫、表、列、索引)的操作。
包括:
CREATE、
DROP、
ALTER、
RENAME、
TRUNCATE等

DML(Data Manipulation Language): 
資料操作語言,
定義對資料庫記錄的操作。
包括:
INSERT、
DELETE、
UPDATE、
SELECT等

DCL(Data Control Language): 
資料控制語言,
定義對資料庫、表、欄位、
使用者的訪問許可權和安全級別。

包括:
GRANT、
REVOKE等

Transaction Control:
事務控制
包括:
COMMIT、
ROLLBACK、
SAVEPOINT等

89. Delete、truncaate、drop都是刪除語句,它們有什麼分別?

delete 屬於DML語句,
刪除資料,
保留表結構,
需要commit,
可以回滾,
如果資料量大,
很慢。

truncate 屬於DDL語句,
刪除所有資料,
保留表結構,
自動commit,
不可以回滾,
一次全部刪除所有資料,
速度相對較快。

Drop屬於 DDL語句,
刪除資料和表結構,
不需要commit,
刪除速度最快。

90.Where和having都是條件篩選關鍵字,它們有什麼分別?

1.Where語句是一條一條從磁碟讀取的,
 然後進行判斷,
滿足條件的存放到記憶體,
不滿足忽略,
而having是將所有的資料讀入記憶體中,
然後在記憶體內部逐條判斷,
不滿足直接刪除
where是判斷資料從磁碟
讀入記憶體的時候,
having是判斷分組
統計之前的所有條件

2.having子句中可以使用欄位別名,
而where不能使用

3.having能夠使用統計函式,
但是where不能使用

4.where 後不能跟聚合函式,
因為where執行順序大於聚合函式。

5.having 是篩選組  
而where是篩選記錄
注意:HAVING用於應被用於WHERE子句的條目,
從我們開頭的2條語句來看,
這樣用並沒有出錯,
但是mysql不推薦。
而且也沒有明確說明原因,
但是既然它要求,
我們遵循就可以了