2020年您應(yīng)該知道的主要SQL面試問題
如果您正在準(zhǔn)備任何與數(shù)據(jù)相關(guān)的工作,應(yīng)該知道的問題

大多數(shù)與數(shù)據(jù)相關(guān)的工作都要求您了解SQL,并且不應(yīng)讓SQL面試問題成為沒有工作的原因。 尤其是在查詢方面,它的學(xué)習(xí)速度非???,您應(yīng)該確保已準(zhǔn)備好應(yīng)對一些最常見的與SQL有關(guān)的面試問題。
這樣,我為您提供了與SQL有關(guān)的面試問題和答案的列表。 請享用!
注意:如果您不知道如何使用SQL查詢,則可以在此處五分鐘內(nèi)學(xué)習(xí)SQL。
什么是SQL?
SQL代表結(jié)構(gòu)化查詢語言。 根據(jù)Wikipedia的說法,SQL是一種特定于域的語言,用于編程,旨在管理關(guān)系數(shù)據(jù)庫管理系統(tǒng)中保存的數(shù)據(jù)或關(guān)系數(shù)據(jù)流管理系統(tǒng)中的流處理[1]。
什么是主鍵?
主鍵是一列(或一組列),可唯一標(biāo)識表中的每一行。 通常,為此目的創(chuàng)建一個ID列。
什么是條款?
SQL子句是SQL語句中定義明確的部分,通常用于根據(jù)預(yù)定義條件過濾結(jié)果,但并非總是如此。 例如,ORDER BY是一個子句,但不過濾結(jié)果。
五個主要子句是TOP子句,WHERE子句,ORDER BY子句,GROUP BY子句和HAVING子句。
WHERE和HAVING子句有什么區(qū)別?
WHERE和HAVING都用于過濾表以滿足您設(shè)置的條件。 當(dāng)它們與GROUP BY子句一起使用時,將顯示兩者之間的差異。 WHERE子句用于在分組之前過濾行(在GROUP BY子句之前),而HAVING子句用于在分組之后過濾行。
有哪些不同類型的聯(lián)接,并分別說明它們?

有四種不同類型的聯(lián)接:
- 內(nèi)部聯(lián)接:返回兩個表中具有匹配值的記錄
- 左聯(lián)接:返回左表中的所有記錄以及右表中的匹配記錄
- 右連接:從右表返回所有記錄,并從左表返回匹配的記錄
- 完全連接:當(dāng)左表或右表中存在匹配項時,返回所有記錄
UNION和JOIN有什么區(qū)別?
兩者都用于將來自一個或多個表的數(shù)據(jù)合并為一個結(jié)果。 區(qū)別在于JOIN語句將不同表的列合并為一個結(jié)果,而UNION語句將不同表的行合并為一個結(jié)果。
DELETE和TRUNCATE語句有什么區(qū)別?
DELETE用于從表中刪除一個或多個行。 您可以在使用delete語句后回滾數(shù)據(jù)。
TRUNCATE用于刪除表中的所有行,并且執(zhí)行后不能回滾數(shù)據(jù)。
什么是視圖?
視圖也是一個表-它是另一個表或多個表上查詢的存儲結(jié)果集,用戶可以像其他任何表一樣從中查詢。
什么是子查詢?這兩種類型是什么?
子查詢(也稱為內(nèi)部查詢或嵌套查詢)是另一個SQL查詢中的查詢,用于返回將在主查詢中用作進一步限制要檢索的數(shù)據(jù)的條件的數(shù)據(jù)[2]。
有兩種類型的子查詢:
- 關(guān)聯(lián)子查詢:關(guān)聯(lián)子查詢不能獨立于外部查詢進行評估,因為子查詢使用父語句的值。
- 不相關(guān)的子查詢:不相關(guān)的子查詢可被視為獨立查詢,并且子查詢的輸出將替換為主查詢中。
您可以在此處了解更多有關(guān)它們的信息。
集合函數(shù)和標(biāo)量函數(shù)有什么區(qū)別? 給每個例子
聚合函數(shù)對多個值執(zhí)行操作以返回單個值。 聚合函數(shù)通常與GROUP BY和HAVING子句一起使用。 聚合函數(shù)的一些示例包括:
- AVG()—計算值集合的平均值。
- COUNT()—計算特定表或視圖中的記錄總數(shù)。
- MIN()—計算一組值的最小值。
- MAX()—計算一組值的最大值。
- SUM()—計算值集合的總和。
- FIRST()—獲取值集合中的第一個元素。
- LAST()—獲取值集合中的最后一個元素。
標(biāo)量函數(shù)根據(jù)輸入值返回單個值。 標(biāo)量函數(shù)的一些示例包括:
- LEN()—計算給定字段(列)的總長度。
- UCASE()—將字符串值的集合轉(zhuǎn)換為大寫字符。
- LCASE()—將字符串值的集合轉(zhuǎn)換為小寫字符。
- CONCAT()—連接兩個或多個字符串。
- ROUND()—計算數(shù)字字段的四舍五入整數(shù)值(或小數(shù)點值)。
SQL和MySQL有什么區(qū)別?
重申一下,SQL是一種特定于域的語言,用于管理,檢索和操作結(jié)構(gòu)化數(shù)據(jù)庫。 MySQL是一個關(guān)系數(shù)據(jù)庫管理系統(tǒng),例如Oracle。
TLDR:SQL是一種語言,MySQL是數(shù)據(jù)庫。