20 個最常見的 SQL 查詢面試問題和答案 [針對應屆生和有經驗者]

已發表: 2021-07-14

參加SQL 面試並想知道您將經歷哪些問題和討論? 在參加 SQL 面試之前,最好先了解一下將要問的SQL 面試問題的類型,這樣你就可以在心理上為這些問題準備答案。

為了幫助您,我創建了頂級SQL 面試問題和答案指南,以了解 SQL 面試問題的深度和真實意圖。 讓我們開始吧。

結構化查詢語言 (SQL) 是一種流行且廣泛使用的編程語言,用於管理、操作和查詢關係數據庫中的數據。 雖然 SQL 並不是與關係數據庫通信的最快語言,但它無疑是處理結構化數據的最有效方法。

ISAMVSAM等傳統讀寫 API 相比,SQL 擴展了兩個核心優勢:

  • 它允許您使用單個命令訪問多個記錄。
  • 它消除了指定如何從數據庫訪問記錄(是否使用索引)的需要。

SQL 查詢是用於訪問存儲在數據庫中的數據的問題或請求。 數據庫以表格格式存儲信息。 因此,它包含行和列。 雖然數據庫字段形成了指導數據庫關於它可以存儲什麼信息的列,但行包含數據。 這是一個名為“tblAlbum”的示例數據集,可以讓您了解情況:

資源

讓我們使用這個示例數據創建一個 SQL 查詢。 我們將專注於只選擇那些評分為 9 或以上的專輯。 因此,我們實質上是要求查詢從數據庫中生成一個評級等於或大於 9 的專輯標題列表。您將使用相關關鍵字來獲得所需的答案。

sql面試問題和答案

這個場景中的關鍵字是 - SELECT(指示從數據庫中獲取信息)、FROM(包含所述數據的特定表)和 WHERE(指示訪問信息的標準)。 當您使用這些關鍵字時,您的 SQL 查詢將如下所示:

從 tblAlbums 中選擇專輯標題

WHERE 評分 >= 9;

因此,您從 (FROM) 表“tblAlbums”中選擇 (SELECT) 數據,其中 (WHERE) 專輯評分為 9 或以上。 如果涉及大量嵌套邏輯,則 WHERE 語句可能非常簡單或過於復雜。 運行查詢時,您將獲得以下結果:

專輯名稱

D小調交響曲

詩人的心

現在您對什麼是 SQL 查詢以及它們的功能有了基本的了解,讓我們來看看二十個 SQL 查詢面試題!

在我們開始處理 SQL 查詢面試問題之前,請查看這些參考表——我們的查詢將基於這些表。

員工信息表:

企業標識企業名稱企業名稱項目地址出生日期性別
1 羅希特古普塔行政P1 德里1979 年 2 月 12 日男性
2 拉胡爾馬哈詹行政P2 孟買1986 年 10 月 10 日男性
3 索尼婭班納吉人力資源P3 浦那1983 年 5 月 6 日女性
4 安基塔卡普爾人力資源P4 欽奈1983 年 11 月 28 日女性
5 斯瓦蒂加格人力資源P5 德里06/04/1991 女性

員工職位表:

企業標識職位入職日期薪水
1 管理人員2020 年 1 月 4 日75000
2 經理2020 年 3 月 4 日500000
3 經理2020 年 2 月 4 日150000
2 2020 年 2 月 4 日90000
1 經理2020 年 3 月 4 日300000

SQL 查詢面試問答

  1. 使用別名作為 EmpName 編寫查詢以從大寫的 EmployeeInfo 表中獲取 EmpFname。

此條件的查詢是:

從 EmployeeInfo 中選擇 UPPER(EmpFname) 作為 EmpName;

  1. 編寫查詢以獲取在“HR”部門工作的員工人數。

這是此需求的查詢:

SELECT COUNT(*) FROM EmployeeInfo WHERE Department = 'HR';

  1. 您將編寫什麼查詢來獲取當前日期?

要獲取當前日期,您可以在 SQL 服務器中編寫此查詢:

選擇獲取日期();

要獲取當前日期,您可以在 MySQL 中編寫以下查詢:

選擇系統日期();

  1. 編寫一個查詢以僅從 EmployeeInfo 表的 Address 列中獲取地名(括號前的字符串)。

您可以使用 MySQL 中的 MID 函數來創建以下查詢:

SELECT MID(Address, 0, LOCATE('(',Address)) FROM EmployeeInfo;

您可以使用 SUBSTRING 創建以下查詢:

SELECT SUBSTRING(Address, 1, CHARINDEX('(',Address)) FROM EmployeeInfo;

閱讀更多:用於數據科學的 SQL:為什麼使用 SQL

  1. 編寫一個查詢來創建一個新表,其數據和結構是從另一個表中復制的。

您可以使用 SELECT INTO 命令創建以下查詢:

SELECT * INTO NewTable FROM EmployeeInfo WHERE 1 = 0;

您可以在 MySQL 中使用 CREATE 命令創建以下查詢:

CREATE TABLE NewTable AS SELECT * FROM EmployeeInfo;

  1. 編寫查詢以顯示以“S”開頭的員工姓名。

這是您需要編寫的查詢以獲取名稱以“S”開頭的員工的姓名:

SELECT * FROM EmployeeInfo WHERE EmpFname LIKE 'S%';

  1. 編寫查詢以檢索前 N 條記錄。

您可以使用 SQL Server 中的 TOP 命令編寫查詢:

SELECT TOP N * FROM EmployeePosition ORDER BY Salary DESC;

您還可以在 MySQL 中使用 LIMIT 命令創建查詢:

SELECT * FROM EmpPosition ORDER BY Salary DESC LIMIT N;

  1. 編寫查詢,從 EmployeeInfo 表中獲取相關記錄,該表按 Department 升序排列,EmpLname 降序排列。

為此,您需要在 SQL 中使用 ORDER BY 語句;

SELECT * FROM EmployeeInfo ORDER BY Department asc, EmpFname desc;

  1. 編寫查詢以獲取 EmpFname 以“A”結尾的員工的詳細信息。

您可以在 SQL 中使用 LIKE 運算符為此問題創建查詢:

SELECT * FROM EmployeeInfo WHERE EmpFname LIKE '____a';

10.創建查詢以獲取地址為“DELHI”的員工的詳細信息。

SELECT * FROM EmployeeInfo WHERE Address LIKE 'DELHI%';

閱讀: 2020 年 9 大數據科學工具

  1. 編寫查詢以獲取所有同時擔任管理職位的員工。

如果沒有這個問題,任何 SQL 面試問答指南都不會完整。

這是獲取擔任管理職位的員工的查詢:

選擇 E.EmpFname、E.EmpLname、P.EmpPosition

FROM EmployeeInfo E INNER JOIN EmployeePosition P ON

E.EmpID = P.EmpID AND P.EmpPosition IN ('Manager');

  1. 創建一個查詢以從 EmployeeInfo 表中生成第一條和最後一條記錄。

最常見的 SQL 面試問題之一。

下面是從 EmployeeInfo 表中獲取第一條記錄的查詢:

SELECT * FROM EmployeeInfo WHERE EmpID = (SELECT MIN(EmpID) FROM EmployeeInfo);

這是從 EmployeeInfo 表中獲取最後一條記錄的查詢:

SELECT * FROM EmployeeInfo WHERE EmpID = (SELECT MAX(EmpID) FROM EmployeeInfo);

  1. 創建一個查詢以檢查傳遞給查詢的值是否遵循 EmployeeInfo 和 EmployeePosition 表的日期格式。

您可以使用 SQL 中的 IsDate() 函數來檢查傳遞的值是否遵循指定的格式。 它相應地返回 1(true) 或 0(false)。 以下是查詢的外觀:

選擇 ISDATE('01/04/2020') 作為“MM/DD/YY”;

運行此查詢將返回 0,因為傳遞的值與指定的格式不匹配。

  1. 創建查詢以獲取顯示工資等於或大於 150000 的員工。

此請求的查詢將是:

SELECT EmpName FROM Employees WHERE Salary>=150000;

  1. 編寫查詢以使用日期獲取年份。

您可以通過運行以下查詢從 SQL 服務器中的日期獲取年份:

選擇年份(GETDATE())作為“年份”;

  1. 創建一個 SQL 查詢以獲取 EmpPostion 和為每個員工職位支付的總工資。

此請求的查詢是:

SELECT EmpPosition, SUM(Salary) from EmployeePosition GROUP BY EmpPosition;

  1. 編寫查詢以從表中查找重複記錄。

任何 SQL 面試問答指南中最常見的問題之一。

選擇 EmpID、EmpFname、部門 COUNT(*)

FROM EmployeeInfo GROUP BY EmpID、EmpFname、Department

計數(*)> 1;

  1. 創建一個查詢以從 EmpPosition 表中獲取第三高的薪水。

選擇 TOP 1 薪水

從(

選擇 TOP 3 薪水

FROM 員工表

ORDER BY Salary DESC) AS emp

按工資 ASC 排序;

  1. 編寫 SQL 查詢以查找 EmployeeInfo 表中的偶數和奇數記錄。

您必須使用 MOD() 函數從表中獲取偶數和奇數記錄。 對於偶數記錄,查詢將是:

SELECT EmpID FROM (SELECT rowno, EmpID from EmployeeInfo) WHERE MOD(rowno,2)=0;

對於奇數記錄,查詢將是:

SELECT EmpID FROM (SELECT rowno, EmpID from EmployeeInfo) WHERE MOD(rowno,2)=1;

  1. 創建查詢以獲取同一部門的員工列表。

這是此請求的查詢:

選擇 DISTINCT E.EmpID、E.EmpFname、E.DepartmentFROM EmployeeInfo E、Employee E1

其中 E.Department = E1.Department AND E.EmpID != E1.EmpID;

從世界頂級大學在線學習軟件課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論

至此,我們的 SQL 查詢面試問題列表結束。 我們希望這些查詢能讓您對標準 SQL 查詢模式以及如何創建 SQL 查詢有一個清晰的認識。 你練習得越多,你就越能更好地編寫 SQL 查詢來訪問和操作數據表中的數據。

如果您想提高自己的 SQL 知識,以及更多關於全棧開發的知識,請查看 IIIT-B 和 upGrad 的全棧軟件開發 PG 文憑,該文憑專為在職專業人士而設,提供 10 多個案例研究和項目,實用的動手操作研討會,與行業專家的指導,與行業導師的一對一交流,400 多個小時的學習和頂級公司的工作協助。

為未來的職業做準備

立即申請全棧開發的執行 PG 計劃