免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

80 個(gè)常見的 SQL 面試問題與答案

:2024年06月05日 Python學(xué)研大本營
分享到:

內(nèi)容概覽本文介紹的面試題包括以下內(nèi)容。SQL 基礎(chǔ)知識(shí),包括 SQL 應(yīng)用程序、SQL 語句、SQL 命令和 SQL 查詢的類型等。SQL 中的函數(shù)。包括聚合函數(shù)和標(biāo)量函數(shù),以及 SQL 內(nèi)置函數(shù)和用戶定義函數(shù)。高級(jí)命令...

內(nèi)容概覽

本文介紹的面試題包括以下內(nèi)容。

  1. SQL 基礎(chǔ)知識(shí),包括 SQL 應(yīng)用程序、SQL 語句、SQL 命令和 SQL 查詢的類型等。

  2. SQL 中的函數(shù)。包括聚合函數(shù)和標(biāo)量函數(shù),以及 SQL 內(nèi)置函數(shù)和用戶定義函數(shù)。

  3. 高級(jí)命令。包括 Join、主鍵和外鍵、索引和關(guān)聯(lián)等主題。

  4. 數(shù)據(jù)庫設(shè)計(jì)。包括范式、反范式,以及 DELETE、TRUNCATE、DROP 等 SQL 語句。

  5. 高級(jí)查詢。包括子查詢(嵌套子查詢和相關(guān)子查詢)等。

通用問題

在考察你的 SQL 技術(shù)前,面試官可能會(huì)問一些有關(guān) SQL 的通用問題。例如:

  • 你對(duì)哪些 SQL 方言比較熟悉?

  • 你如何評(píng)價(jià)自己對(duì) SQL 的熟練程度?

  • 你從事 SQL 的工作多久了?

雖然在你的簡歷中會(huì)提及這些信息,但你也要做好介紹這些信息的準(zhǔn)備。當(dāng)然,這類問題并沒有所謂的正確答案,但切忌在回答時(shí)胡編亂造。

就算你的 SQL 工作經(jīng)驗(yàn)有限,也不必要擔(dān)心,面試官看簡歷的時(shí)候就知道這一點(diǎn)了。但既然他們還有興趣面試你,就說明他們認(rèn)為你有與他們公司需求相契合的點(diǎn)。

另外,哪怕你只使用過一種 SQL 方言,也沒關(guān)系。記住,各個(gè) SQL 方言的相似度非常高,只熟悉其中一種也是可以的。

40 個(gè)初級(jí) SQL 面試題

1.什么是SQL?

SQL 的全稱是 Structured Query Language,即結(jié)構(gòu)化查詢語言,它是用來與關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)交互的語言,包括從表中獲取、更新、插入和刪除數(shù)據(jù),也就是我們常說的增刪改查

2. 什么是 SQL 方言?

SQL 包括多種免費(fèi)或付費(fèi)的版本,這些不同的版本都被稱為 SQL 方言。各種 SQL 方言的語法非常相似,只是功能有些差別。如 Microsoft SQL Server、PostgreSQL、MySQL、SQLite、T-SQL、Oracle 等。

3. SQL的主要應(yīng)用有哪些?

使用 SQL,可以實(shí)現(xiàn)以下功能。

  • 創(chuàng)建、刪除和更新數(shù)據(jù)庫中的表。

  • 訪問、操作和修改表中的數(shù)據(jù)。

  • 從一個(gè)或多個(gè)表中提取和總結(jié)的信息。

  • 在表中添加或刪除某些行或列。

總之,SQL 允許以多種方式查詢數(shù)據(jù)庫,還可以輕松地與 Python 或 R 等編程語言集成。

4.什么是 SQL 語句?舉一些例子。

SQL語句也叫 SQL 命令,由 SQL 引擎解釋并執(zhí)行。SQL 語句包括 SELECTCREATEDELETEDROPREVOKE等。

5. 有哪些類型的 SQL 命令(或 SQL 子集)?

  • 數(shù)據(jù)定義語言 (DDL) – 定義和修改數(shù)據(jù)庫的結(jié)構(gòu)。

  • 數(shù)據(jù)操作語言 (DML) – 訪問、操作和修改數(shù)據(jù)庫中的數(shù)據(jù)。

  • 數(shù)據(jù)控制語言 (DCL) – 控制用戶對(duì)數(shù)據(jù)庫中數(shù)據(jù)的訪問,并授予或撤銷特定用戶或一組用戶的權(quán)限。

  • 事務(wù)控制語言 (TCL) – 控制數(shù)據(jù)庫中的事務(wù)。

  • 數(shù)據(jù)查詢語言 (DQL) – 對(duì)數(shù)據(jù)庫中的數(shù)據(jù)執(zhí)行查詢以從中檢索必要的信息。

6. 請(qǐng)給出一些常見 SQL 命令。

  • DDLCREATEALTERTABLEDROPTRUNCATEADD COLUMN

  • DMLUPDATEDELETEINSERT

  • DCLGRANTREVOKE

  • TCLCOMMITSET TRANSACTIONROLLBACKSAVEPOINT

  • DQLSELECT

7.什么是數(shù)據(jù)庫?

數(shù)據(jù)庫是一種結(jié)構(gòu)化的存儲(chǔ)空間,數(shù)據(jù)保存在表中,可供提取、操作和匯總數(shù)據(jù)信息。

8. 什么是 DBMS?你知道哪些類型的 DBMS?

DBMS 是數(shù)據(jù)庫管理系統(tǒng),可以對(duì)數(shù)據(jù)執(zhí)行各種操作,如訪問、更新、整理、插入和刪除數(shù)據(jù)。

DBMS 有多種類型,如關(guān)系型、層次型、網(wǎng)絡(luò)型、圖型和面向?qū)ο笮汀_@些類型的劃分基于數(shù)據(jù)在系統(tǒng)中的組織、結(jié)構(gòu)與存儲(chǔ)方式。

9.什么是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)?舉一些 RDBMS 的例子。

RDBMS,即關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。它是最常見的數(shù)據(jù)庫管理系統(tǒng),用于處理存儲(chǔ)表中的數(shù)據(jù)。SQL 是專門用于與關(guān)系型數(shù)據(jù)庫交互的語言。主流的關(guān)系型數(shù)據(jù)庫包括 MySQL、PostgreSQL、Oracle、MariaDB 等。

10. SQL中的表和字段是什么?

表是以表格形式存儲(chǔ)的有組織的數(shù)據(jù)。字段是列的別稱。

11. 什么是 SQL 查詢,你知道哪些類型的查詢?

SQL 查詢是用于查詢或修改數(shù)據(jù)庫中數(shù)據(jù)的 SQL 代碼。

SQL 查詢有兩種:選擇查詢和操作查詢。第一種用于檢索數(shù)據(jù)(包括限制、分組、排序數(shù)據(jù),以及從多個(gè)表中提取數(shù)據(jù)等)。第二種 SQL 查詢用于創(chuàng)建、添加、刪除、更新、重命名數(shù)據(jù)等。

12.什么是子查詢?

子查詢也稱為內(nèi)部查詢,是在一個(gè)查詢或外部查詢中的查詢。子查詢可能出現(xiàn)在 SELECTFROMWHEREUPDATE 等子句中。

子查詢中還可以包含子查詢。最里面的子查詢首先運(yùn)行,并將結(jié)果傳遞給它的外部查詢。

13.你知道哪些類型的 SQL 子查詢?

  • 單行子查詢 – 最多返回一行。

  • 多行子查詢 – 返回至少兩行。

  • 多列子查詢 – 返回至少兩列。

  • 相關(guān)子查詢 - 與外部查詢的信息相關(guān)的子查詢。

  • 嵌套子查詢 – 子查詢嵌套在另一個(gè)子查詢中。

14.什么是約束,為什么使用約束?

定義表中列的數(shù)據(jù)類型的條件。約束可確保表中數(shù)據(jù)的完整性,并阻止不需要的操作。

15.你知道哪些 SQL 約束?

  • DEFAULT – 為列提供默認(rèn)值。

  • UNIQUE – 只允許唯一值。

  • NOT NULL – 只允許非空值。

  • PRIMARY KEY – 必須是唯一值,且必須是非空值(NOT NULLUNIQUE)。

  • FOREIGN KEY – 實(shí)現(xiàn)兩個(gè)或多個(gè)表之間共享的鍵。

16. 什么是 join?

用于從多個(gè)表中提取數(shù)據(jù)記錄的語句。SQL 表可以根據(jù)表之間的關(guān)系進(jìn)行連接。

17. join 的類型都有哪些?

  • (INNER) JOIN – 只返回滿足兩個(gè)(或所有)表中定義的 join 條件的記錄。這是默認(rèn)的 SQL 連接。

  • LEFT (OUTER) JOIN – 返回左表中的所有記錄及右表中滿足定義的 join 條件的記錄。

  • RIGHT (OUTER) JOIN – 返回右表中的所有記錄及左表中滿足定義的 join 條件的記錄。

  • FULL (OUTER) JOIN – 返回兩個(gè)(或所有)表中的所有記錄。它是左連接和右連接的組合。

18.什么是主鍵?

把表的一列或多列設(shè)置為主鍵可以約束該列中的值是唯一值,而且必須是非空值。主鍵是 NOT NULLUNIQUE 約束的組合。主鍵確保表中的每條記錄都是唯一的,每個(gè)表都應(yīng)該包含主鍵,但不能包含多個(gè)主鍵。

19. 什么是唯一鍵?

把表的一列或多列設(shè)置為 UNIQUE 可以約束該列中的值是唯一值,即便 NULL 值也只能是唯一的。

20.什么是外鍵?

把表的一列或多列設(shè)置為 FOREIGN KEY 可以將該列與另一個(gè)表(或多個(gè)表)中的主鍵相關(guān)聯(lián)。外鍵用于把數(shù)據(jù)庫的多個(gè)表連接起來。

21.什么是索引?

索引用于實(shí)現(xiàn)更快的數(shù)據(jù)檢索。索引可以顯著提高大型數(shù)據(jù)庫的查詢性能。

22. 你知道哪些類型的索引?

  • 唯一索引 – 不允許表的列中存在重復(fù)項(xiàng),便于維護(hù)數(shù)據(jù)完整性。

  • 聚合索引 – 定義數(shù)據(jù)庫表中記錄的物理順序,并根據(jù)鍵值進(jìn)行數(shù)據(jù)搜索。一張表只能有一個(gè)聚合索引。

  • 非聚合索引 – 表的記錄順序與磁盤數(shù)據(jù)的物理順序不匹配。這意味著數(shù)據(jù)存儲(chǔ)在一個(gè)位置,非聚合索引存儲(chǔ)在另一個(gè)位置。一個(gè)表可以有多個(gè)非聚合索引。

23.什么是 schema?

schema 是表、存儲(chǔ)過程、索引、函數(shù)和觸發(fā)器等數(shù)據(jù)庫結(jié)構(gòu)元素的集合,是數(shù)據(jù)庫的總體架構(gòu),指定了數(shù)據(jù)庫中對(duì)象之間的關(guān)系,并為它們定義不同的訪問權(quán)限。

24.什么是 SQL 注釋?

SQL 代碼注釋可以是單行注釋(--),也可以是多行注釋(/*comment_text*/)。SQL 引擎運(yùn)行時(shí)會(huì)忽略代碼注釋。注釋是為了讓人更方便地閱讀代碼。

25.什么是 SQL 運(yùn)算符?

用于執(zhí)行特定操作的保留字符或關(guān)鍵字。SQL 運(yùn)算符通常與 WHERE 子句一起使用,以設(shè)置過濾數(shù)據(jù)的條件。

26. 你知道哪些類型的 SQL 運(yùn)算符?

  • 算術(shù)運(yùn)算符+-*/

  • 比較運(yùn)算符&gt;<`、`=`、`>=

  • 復(fù)合運(yùn)算符+=-=*=/=

  • 邏輯運(yùn)算符ANDORNOTBETWEEN

  • 字符串運(yùn)算符%_+^

  • 集合運(yùn)算符UNIONUNION ALLINTERSECTMINUSEXCEPT

27. 什么是別名?

執(zhí)行 SQL 查詢時(shí)為表(或表中的列)指定的臨時(shí)名稱。使用別名是為了提高代碼的可讀性,使代碼更加簡潔。別名的關(guān)鍵字是 AS

1SELECT col_1 AS column

2FROM table_name;

28. 什么是子句?

SQL 查詢的條件,用于過濾數(shù)據(jù)以獲得查詢的結(jié)果。如,WHERELIMITHAVINGLIKEANDORORDER BY 等。

29. SELECT 查詢中常用的語句有哪些?

主要有 FROMGROUP BYJOINWHEREORDER BYLIMITHAVING 等。

30.如何創(chuàng)建表?

使用 CREATE TABLE。例如,要?jiǎng)?chuàng)建一個(gè)包含 3 列預(yù)定義數(shù)據(jù)類型的表。

1CREATE TABLE table_name (col_1 datatype,

2                         col_2 datatype,

3                         col_3 datatype);

31.如何更新表?

使用 UPDATE 語句。

1UPDATE table_name

2SET col_1 = value_1, column_2 = value_2

3WHERE condition;

32. 如何從數(shù)據(jù)庫中刪除表?

使用 DROP TABLE 聲明。語法是:DROP TABLE table_name;

33. 如何獲取表中的記錄數(shù)?

使用聚合函數(shù) COUNT()SELECT COUNT(*) FROM table_name;

34.如何排序表中的記錄?

使用 ORDER BY 語句。

1SELECT * FROM table_name

2ORDER BY col_1;

默認(rèn)排序?yàn)樯颍褂藐P(guān)鍵字 DESC 可以指定降序的列。還可以實(shí)現(xiàn)多列排序,分別指定每一列是升序還降序。例如:

1SELECT * FROM table_name

2ORDER BY col_1 DESC, col_3, col_6 DESC;

35. 如何選擇表中的所有列?

SELECT 語句中使用星號(hào) *。語法是:SELECT * FROM table_name;

36、如何從兩個(gè)表中選取共同的記錄?

使用 INTERSECT語句,示例如下。

1    SELECT * FROM table_1

2    INTERSECT

3    SELECT * FROM table_1;

37. 什么是 DISTINCT 語句,如何使用?

DISTINCT 可以與 SELECT 一起使用,以過濾掉重復(fù)項(xiàng),并僅返回表中列的唯一值。示例如下。

1    SELECT DISTINCT col_1

2    FROM table_name;

38.什么是實(shí)體?舉一些例子。

實(shí)體是可以收集并存儲(chǔ)到數(shù)據(jù)庫表中的現(xiàn)實(shí)世界中的對(duì)象數(shù)據(jù)。每個(gè)實(shí)體對(duì)應(yīng)于表中的一行,表的列描述其屬性。實(shí)體的示例包括銀行交易、學(xué)校學(xué)生、銷售的汽車等。

39.什么是關(guān)系?舉一些例子。

關(guān)系是實(shí)體之間的連接,是指數(shù)據(jù)庫中的多個(gè)表如何相互關(guān)聯(lián)。例如,可以在銷售數(shù)據(jù)表和客戶表中找到同一客戶的 ID。

40.什么是 NULL?它與 0 或空格有什么不同?

NULL 表示表格中的某個(gè)單元格不存在數(shù)據(jù)。

0 是有效的數(shù)值,空字符串是長度為 0 的合法字符串。

40 個(gè)中級(jí) SQL 面試題

41. SQL 中什么是函數(shù),為什么要使用函數(shù)?

函數(shù)是執(zhí)行特定任務(wù)的一組 SQL 語句。函數(shù)接收輸入?yún)?shù),對(duì)它們執(zhí)行計(jì)算或其他操作,然后返回結(jié)果。函數(shù)有助于提高代碼可讀性,并避免重復(fù)相同的代碼片段。

42.你知道哪些類型的 SQL 函數(shù)?

  • 聚合函數(shù) – 針對(duì)處理分組表中列的記錄,并返回單個(gè)值(通常按組)。

  • 標(biāo)量函數(shù) – 處理每個(gè)單獨(dú)的值,并返回單個(gè)值。

另一方面,SQL 函數(shù)可以是內(nèi)置的,或用戶定義的(由用戶根據(jù)其特定需求創(chuàng)建)。

43.你知道哪些聚合函數(shù)?

  • AVG() – 返回平均值。

  • SUM() – 返回值的和。

  • MIN() – 返回最小值。

  • MAX() – 返回最大值。

  • COUNT() – 返回行數(shù),包括具有空值的行數(shù)。

  • FIRST() – 返回列中的第一個(gè)值。

  • LAST() – 返回列中的最后一個(gè)值。

44.你知道哪些標(biāo)量函數(shù)?

  • LEN()(或LENGTH()) – 返回字符串的長度,包括空格。

  • UCASE()(或 UPPER()) – 返回轉(zhuǎn)換為大寫的字符串。

  • LCASE()(或 LOWER()) – 返回轉(zhuǎn)換為小寫的字符串。

  • INITCAP() – 返回轉(zhuǎn)換為首字母大寫的字符串。

  • MID()(或 SUBSTR()) – 從字符串中提取子字符串。

  • ROUND() – 返回四舍五入到指定小數(shù)位數(shù)的數(shù)值。

  • NOW() – 返回當(dāng)前日期和時(shí)間。

45. 什么是大小寫處理函數(shù)?舉一些例子。

大小寫處理函數(shù)是文本函數(shù),用于更改文本數(shù)據(jù)的大小寫,可以將數(shù)據(jù)轉(zhuǎn)換為大寫、小寫或首字母大寫。

  • UCASE()(或 UPPER()) – 返回轉(zhuǎn)換為大寫的字符串。

  • LCASE()(或 LOWER()) – 返回轉(zhuǎn)換為小寫的字符串。

  • INITCAP()– 返回轉(zhuǎn)換為首字母大寫的字符串。

46. 什么是字符操作函數(shù)?舉一些例子。

字符操作函數(shù)代表字符函數(shù)的子集,它們用于修改文本數(shù)據(jù)。

  • CONCAT() – 連接多個(gè)字符串值,將后一個(gè)字符串附加到前一個(gè)字符串的末尾。

  • SUBSTR() – 返回滿足所提供的起點(diǎn)和終點(diǎn)的字符串的一部分。

  • LENGTH()(或 LEN()) – 返回字符串的長度,包括空格。

  • REPLACE() – 用一個(gè)子字符串替換提供的字符串中所有出現(xiàn)的已定義子字符串。

  • INSTR() – 返回給定字符串中定義的子字符串的數(shù)字位置。

  • LPAD()/RPAD() – 返回右對(duì)齊/左對(duì)齊值的左側(cè)/右側(cè)字符的填充。

  • TRIM() – 從提供的字符串的左側(cè)、右側(cè)或兩端刪除所有定義的字符及空格。

47. 局部變量和全局變量有什么區(qū)別?

局部變量只能在聲明該變量的函數(shù)內(nèi)部訪問。

在函數(shù)外部聲明的全局變量存儲(chǔ)在內(nèi)存結(jié)構(gòu)中,可以在整個(gè)程序中使用。

48. ORDER BY 語句的默認(rèn)排序是什么??如何更改?

ORDER BY 語句的默認(rèn)排序是升序。要改為降序,需要添加 DESC 關(guān)鍵字,示例如下。

1SELECT * FROM table_name

2ORDER BY col_1 DESC;

49. 你知道哪些集合運(yùn)算符?

  • UNION – 返回多個(gè)查詢語句的結(jié)果合并后的唯一記錄集(不包括重復(fù)項(xiàng))。

  • UNION ALL – 返回多個(gè)查詢語句的結(jié)果合并后的記錄集(包括重復(fù)項(xiàng))。

  • INTERSECT – 返回多個(gè)查詢語句的結(jié)果交集的記錄集。

  • EXCEPT(MySQL 和 Oracle 中為 MINUS) – 僅返回第一個(gè)語句查詢的結(jié)果,不返回第二個(gè)查詢的結(jié)果。

50. 查詢中使用什么運(yùn)算符進(jìn)行模式匹配?

LIKE 運(yùn)算符與 %_ 通配符結(jié)合使用。通配符 % 代表任意數(shù)量的字符,包括 0 個(gè)字符;_ 嚴(yán)格來說是一個(gè)字符。

51. 主鍵和唯一鍵有什么區(qū)別?

兩種類型的鍵都確保列中的值唯一,但主鍵唯一標(biāo)識(shí)表中的每個(gè)記錄,唯一鍵則防止該列中出現(xiàn)重復(fù)項(xiàng)。

52.什么是復(fù)合主鍵?

表的主鍵,基于多個(gè)列。

53. SELECT 查詢中常見語句的出現(xiàn)順序是什么?

SELECTFROMJOINONWHEREGROUP BYHAVINGORDER BY - LIMIT

54.解釋器執(zhí)行 SELECT 查詢語句的順序是什么?

FROMJOINONWHEREGROUP BYHAVINGSELECTORDER BYLIMIT

55.什么是視圖,為什么要使用視圖?

視圖一種虛擬表,包含從一個(gè)或多個(gè)數(shù)據(jù)庫表(或其他視圖)中提取的數(shù)據(jù)。

視圖占用的空間很少,還可以簡化復(fù)雜的查詢,限制對(duì)數(shù)據(jù)的訪問以確保安全,實(shí)現(xiàn)數(shù)據(jù)獨(dú)立性,并匯總多個(gè)表中的數(shù)據(jù)。

56. 可以基于一個(gè)視圖再創(chuàng)建一個(gè)視圖嗎?

可以。這也叫嵌套視圖。但要避免嵌套多個(gè)視圖,因?yàn)榇a會(huì)變得難以理解,調(diào)試也更加困難。

57. 原表刪除后還可以使用視圖嗎?

不可以。刪除基表后,任何基于該表的視圖都將失效。使用這樣的視圖時(shí),將收到錯(cuò)誤消息。

58. 你知道哪些類型的 SQL 關(guān)系?

  • 一對(duì)一 — 一個(gè)表中的每條記錄僅對(duì)應(yīng)于另一個(gè)表中的一條記錄。

  • 一對(duì)多 — 一個(gè)表中的每條記錄對(duì)應(yīng)另一個(gè)表中的多條記錄。

  • 多對(duì)多 — 兩個(gè)表中的每條記錄都對(duì)應(yīng)于另一個(gè)表中的多條記錄。

59. BOOLEAN 數(shù)據(jù)字段的值有哪些?

在 PostgreSQL 中,BOOLEAN 類型的值包括 TRUEFALSENULL。在其他 SQL 方言中,如 SQL Server,BIT 類型用于將布爾值存儲(chǔ)為整數(shù) 1true)或 0false)。

60. SQL 中的范式(normalization )是什么,為什么要使用范式?

范式是數(shù)據(jù)庫的設(shè)計(jì)過程,旨在減少數(shù)據(jù)冗余、提高數(shù)據(jù)一致性和完整性,讓查詢效率更高,也更靈活,常用的范式有第一范式(1NF)、第二范式(2NF)和第三范式(3NF)。

61. SQL 中的非范式(denormalization )是什么,為什么要使用非范式?

非范式是與范式相反的過程:它引入數(shù)據(jù)冗余,并組合來自多個(gè)表的數(shù)據(jù)。在讀操作比寫操作更重要的情況下,非范式可以優(yōu)化數(shù)據(jù)庫基礎(chǔ)設(shè)施的性能,有助于避免復(fù)雜的連接,并減少查詢運(yùn)行的時(shí)間。

62. 重命名列與列的別名有什么區(qū)別?

重命名列意味著永久更改其在原始表中的實(shí)際名稱。

為列指定別名意味著在執(zhí)行 SQL 查詢時(shí)為其指定一個(gè)臨時(shí)名稱,使代碼更易讀,更簡潔。

63. 嵌套子查詢和相關(guān)子查詢(correlated subquery)有什么區(qū)別?

相關(guān)子查詢是嵌套在外部查詢中的內(nèi)部查詢,該查詢引用外部查詢中的值來執(zhí)行,這意味著相關(guān)子查詢依賴于其外部查詢。相反,非相關(guān)子查詢不依賴于外部查詢的數(shù)據(jù),并且可以獨(dú)立于外部查詢運(yùn)行。

64. 聚合索引和非聚合索引的區(qū)別是什么?

聚合索引定義表中記錄的物理順序,并根據(jù)鍵值執(zhí)行數(shù)據(jù)搜索,而非聚合索引的記錄順序與磁盤上實(shí)際數(shù)據(jù)的物理順序不匹配。一張表只能有一個(gè)聚合索引,但可以有多個(gè)非聚合索引。

65. CASE() 函數(shù)是什么?

SQL 中 if-then-else 邏輯的實(shí)現(xiàn)方式。CASE() 函數(shù)按順序檢查 WHEN 子句中的條件,在滿足第一個(gè)條件時(shí)返回 THEN 子句中的值。如果沒有滿足任何條件,則該函數(shù)將返回 ELSE 子句中的值(如果已提供),否則返回 NULL

1    CASE

2        WHEN condition_1 THEN value_1

3        WHEN condition_2 THEN value_2

4        WHEN condition_3 THEN value_3

5        ...

6        ELSE value

7    END;

66. DELETE 和 TRUNCATE 的區(qū)別是什么?

DELETE 根據(jù) WHERE 子句中的條件從表中刪除一行或多行記錄。

TRUNCATE 是用于刪除表中的所有行,但包含外鍵的表不能使用 TRUNCATE 語句。

DELETE 的速度比 TRUNCATE 慢。

67. DROP 和 TRUNCATE 的區(qū)別是什么?

DROP 從數(shù)據(jù)庫中完全刪除表,包括表結(jié)構(gòu)、約束條件、多表關(guān)系及訪問權(quán)限。

TRUNCATE 刪除表中的所有行的數(shù)據(jù),但不涉及表的結(jié)構(gòu)和約束條件。

DROP 的速度比 TRUNCATE 慢。

兩者都是不可逆的。

68. HAVING 和 WHERE 語句有什么區(qū)別?

HAVING 對(duì)分組后的數(shù)據(jù)進(jìn)行聚合處理。

WHERE 則核查每一行的數(shù)據(jù)。

如果兩個(gè)語句都出現(xiàn)在查詢中,優(yōu)先級(jí)為 WHEREGROUP BYHAVING

SQL 引擎按此順序進(jìn)行解析。

69. 如何向表中添加記錄?

INSERT INTOVALUES 結(jié)合使用。

1    INSERT INTO table_name

2    VALUES (value_1, value_2, ...);

70.如何刪除表中的記錄?

使用 DELETE 語句刪除記錄,可以搭配 WHERE 一起使用。

1    DELETE FROM table_name

2    WHERE condition;

可以刪除符合條件的多條記錄。

71.如何向表格添加列?

ALTER TABLEADD 結(jié)合在一起使用。

1    ALTER TABLE table_name

2    ADD column_name datatype;

72. 如何重命名表的列?

ALTER TABLERENAME COLUMN ... TO ... 一起使用,示例如下。

1    ALTER TABLE table_name

2    RENAME COLUMN old_column_name TO new_column_name;

73. 如何從表中刪除列?

ALTER TABLEDROP COLUMN一起使用,示例如下。

1    ALTER TABLE table_name

2    DROP COLUMN column_name;

34. 如何選擇表中的所有偶數(shù)或奇數(shù)的記錄?

通過計(jì)算除以 2 的余數(shù),實(shí)現(xiàn)這個(gè)操作。

在 PostgreSQL 或 My SQL 中,可以使用 MOD 函數(shù);在 SQL Server 和 SQLite 中使用 % 運(yùn)算符。

使用 MOD 選擇所有偶數(shù)記錄的示例代碼如下。

1SELECT * FROM table_name

2WHERE MOD(ID_column, 2) = 0;

使用 % 選擇所有偶數(shù)記錄的示例代碼如下。

1SELECT * FROM table_name 

2WHERE ID_column % 2 = 0;

選擇所有奇數(shù)記錄時(shí),其他的內(nèi)容不變,用 <> 運(yùn)算符替代 = 即可。

75、查詢時(shí)如何防止重復(fù)記錄?

SELECT 語句中使用 DISTINCT,或?yàn)樵摫韯?chuàng)建唯一鍵。

76. 如何在表中插入多行數(shù)據(jù)?

使用 INSERT INTOVALUES,示例如下。

1INSERT INTO table_name

2VALUES (value_1, value_2, ...),

3      (value_3, value_4, ...),

4      (value_5, value_6, ...),

5      ...;

77. 如何找到表中某一列的第 n 個(gè)最高值?

使用 OFFSET 子句。查找某列中的第 6 個(gè)最高值的示例如下。

1SELECT * FROM table_name

2ORDER BY column_name DESC

3LIMIT 1

4OFFSET 5;

78. 如何查找表格文本列中以某個(gè)字母開頭的值?

使用 LIKE 運(yùn)算符和 %_ 通配符。查找表中所有以 A 開頭的姓的示例如下。

1SELECT * FROM table_name

2WHERE surname LIKE 'A_';

假設(shè)姓里必須包含至少兩個(gè)字母。如果沒有這個(gè)假設(shè)則代表姓可以只是 A,示例如下。

1SELECT * FROM table_name

2WHERE surname LIKE 'A%';

79. 如何查找表中最后一個(gè) id?

使用 MAX() 函數(shù)。在大部分 SQL 方言中的示例如下。

1SELECT id

2FROM table_name

3ORDER BY id DESC

4LIMIT 1;

在 SQL Server 中的示例如下。

1SELECT TOP 1 id

2FROM table_name

3ORDER BY id DESC

80. 如何從表中隨機(jī)選擇行?

ORDER BYLIMIT 中使用 RAND() 函數(shù)。在 PostgreSQL 中,使用 RANDOM()

從 MySQL 的表中返回 5 個(gè)隨機(jī)行的示例如下。

1SELECT * FROM table_name

2ORDER BY RAND()

3LIMIT 5;

結(jié)論

本文介紹了 80 個(gè)常見的 SQL 面試問題及其答案,希望能夠幫助你為面試做好準(zhǔn)備。

原文地址:https://mp.weixin.qq.com/s?__biz=MzkzNTUyMDgzMQ==&mid=2247512041&idx=1&sn=76b018537439ecdba5c2b7b6ad1ecd38&chksm=c31bd271a118a33a2cd6c09b97dc141277f036f121f23fa77fa35635a522ca2ed6c450c173bd&scene=132&exptype=timeline_recommend_article_extendread_extendread_interest&show_related_article=1&subscene=189&scene=132#wechat_redirect

[我要糾錯(cuò)]
文:宋聰喬&發(fā)表于江蘇
關(guān)鍵詞: 內(nèi)容 概覽 本文 介紹 試題

來源:本文內(nèi)容搜集或轉(zhuǎn)自各大網(wǎng)絡(luò)平臺(tái),并已注明來源、出處,如果轉(zhuǎn)載侵犯您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)聯(lián)系小編,我們會(huì)及時(shí)審核處理。
聲明:江蘇教育黃頁對(duì)文中觀點(diǎn)保持中立,對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或者完整性不提供任何明示或暗示的保證,不對(duì)文章觀點(diǎn)負(fù)責(zé),僅作分享之用,文章版權(quán)及插圖屬于原作者。

點(diǎn)個(gè)贊
0
踩一腳
0

您在閱讀:80 個(gè)常見的 SQL 面試問題與答案

Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發(fā)布查詢平臺(tái)保留所有權(quán)利

蘇公網(wǎng)安備32010402000125 蘇ICP備14051488號(hào)-3技術(shù)支持:南京博盛藍(lán)睿網(wǎng)絡(luò)科技有限公司

南京思必達(dá)教育科技有限公司版權(quán)所有   百度統(tǒng)計(jì)

主站蜘蛛池模板: 国产片久久 | video欧美性精品 | 男人午夜视频在线观看 | 中国a毛片 | 国产黄色a三级三级三级 | 黄色大片视频 | 久青草国产97香蕉在线视频xx | 欧美怡春院 | 黄色一级免费大片 | 国产精品一区二区免费 | 欧美成人手机视频免费播放 | 一级视频在线免费观看 | 男女国产视频 | 亚洲成人一区 | 欧美xxxx性疯狂bbbb | 中文字幕免费在线观看 | 午夜性影院 | 午夜影院污 | 伊人久久大香网 | 亚洲91在线视频 | 免费一级α片在线观看 | 成年网站免费视频黄 | 人喾交性专区免费看 | 欧美洲视频在线观看 | 欧美人成一本免费观看视频 | 免费成人高清视频 | 成人看的羞羞视频免费观看 | 亚州淫片aaaa视频 | 一级黄色小视频 | 日韩欧美高清 | 一级全免费视频播放 | 一级片免费在线观看视频 | 手机在线观看视频你懂的 | 色在线视频免费 | 日日噜噜噜夜夜爽爽狠狠69 | 色站网 | 夜夜躁日日躁狠狠久久 | 三级伦理在线播放 | 老年人黄色一级片 | 国产精品久久毛片蜜月 | 日本欧美一区二区三区在线 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產(chǎn)品享最低成本,有需要聯(lián)系,
  • 卡爾蔡司鏡片優(yōu)惠店,鏡片價(jià)格低
  • 蘋果原裝手機(jī)殼