20 個最常見的 SQL 查詢面試問題和答案 [針對應屆生和有經驗者]
已發表: 2021-07-14參加SQL 面試並想知道您將經歷哪些問題和討論? 在參加 SQL 面試之前,最好先了解一下將要問的SQL 面試問題的類型,這樣你就可以在心理上為這些問題準備答案。
為了幫助您,我創建了頂級SQL 面試問題和答案指南,以了解 SQL 面試問題的深度和真實意圖。 讓我們開始吧。
結構化查詢語言 (SQL) 是一種流行且廣泛使用的編程語言,用於管理、操作和查詢關係數據庫中的數據。 雖然 SQL 並不是與關係數據庫通信的最快語言,但它無疑是處理結構化數據的最有效方法。
與ISAM或VSAM等傳統讀寫 API 相比,SQL 擴展了兩個核心優勢:
- 它允許您使用單個命令訪問多個記錄。
- 它消除了指定如何從數據庫訪問記錄(是否使用索引)的需要。
SQL 查詢是用於訪問存儲在數據庫中的數據的問題或請求。 數據庫以表格格式存儲信息。 因此,它包含行和列。 雖然數據庫字段形成了指導數據庫關於它可以存儲什麼信息的列,但行包含數據。 這是一個名為“tblAlbum”的示例數據集,可以讓您了解情況:
資源
讓我們使用這個示例數據創建一個 SQL 查詢。 我們將專注於只選擇那些評分為 9 或以上的專輯。 因此,我們實質上是要求查詢從數據庫中生成一個評級等於或大於 9 的專輯標題列表。您將使用相關關鍵字來獲得所需的答案。
這個場景中的關鍵字是 - 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 查詢面試問答
- 使用別名作為 EmpName 編寫查詢以從大寫的 EmployeeInfo 表中獲取 EmpFname。
此條件的查詢是:
從 EmployeeInfo 中選擇 UPPER(EmpFname) 作為 EmpName;
- 編寫查詢以獲取在“HR”部門工作的員工人數。
這是此需求的查詢:
SELECT COUNT(*) FROM EmployeeInfo WHERE Department = 'HR';
- 您將編寫什麼查詢來獲取當前日期?
要獲取當前日期,您可以在 SQL 服務器中編寫此查詢:
選擇獲取日期();
要獲取當前日期,您可以在 MySQL 中編寫以下查詢:
選擇系統日期();
- 編寫一個查詢以僅從 EmployeeInfo 表的 Address 列中獲取地名(括號前的字符串)。
您可以使用 MySQL 中的 MID 函數來創建以下查詢:
SELECT MID(Address, 0, LOCATE('(',Address)) FROM EmployeeInfo;
您可以使用 SUBSTRING 創建以下查詢:
SELECT SUBSTRING(Address, 1, CHARINDEX('(',Address)) FROM EmployeeInfo;
閱讀更多:用於數據科學的 SQL:為什麼使用 SQL
- 編寫一個查詢來創建一個新表,其數據和結構是從另一個表中復制的。
您可以使用 SELECT INTO 命令創建以下查詢:
SELECT * INTO NewTable FROM EmployeeInfo WHERE 1 = 0;
您可以在 MySQL 中使用 CREATE 命令創建以下查詢:
CREATE TABLE NewTable AS SELECT * FROM EmployeeInfo;
- 編寫查詢以顯示以“S”開頭的員工姓名。
這是您需要編寫的查詢以獲取名稱以“S”開頭的員工的姓名:
SELECT * FROM EmployeeInfo WHERE EmpFname LIKE 'S%';
- 編寫查詢以檢索前 N 條記錄。
您可以使用 SQL Server 中的 TOP 命令編寫查詢:
SELECT TOP N * FROM EmployeePosition ORDER BY Salary DESC;
您還可以在 MySQL 中使用 LIMIT 命令創建查詢:
SELECT * FROM EmpPosition ORDER BY Salary DESC LIMIT N;
- 編寫查詢,從 EmployeeInfo 表中獲取相關記錄,該表按 Department 升序排列,EmpLname 降序排列。
為此,您需要在 SQL 中使用 ORDER BY 語句;
SELECT * FROM EmployeeInfo ORDER BY Department asc, EmpFname desc;
- 編寫查詢以獲取 EmpFname 以“A”結尾的員工的詳細信息。
您可以在 SQL 中使用 LIKE 運算符為此問題創建查詢:
SELECT * FROM EmployeeInfo WHERE EmpFname LIKE '____a';
10.創建查詢以獲取地址為“DELHI”的員工的詳細信息。
SELECT * FROM EmployeeInfo WHERE Address LIKE 'DELHI%';
閱讀: 2020 年 9 大數據科學工具
- 編寫查詢以獲取所有同時擔任管理職位的員工。
如果沒有這個問題,任何 SQL 面試問答指南都不會完整。
這是獲取擔任管理職位的員工的查詢:
選擇 E.EmpFname、E.EmpLname、P.EmpPosition
FROM EmployeeInfo E INNER JOIN EmployeePosition P ON
E.EmpID = P.EmpID AND P.EmpPosition IN ('Manager');
- 創建一個查詢以從 EmployeeInfo 表中生成第一條和最後一條記錄。
最常見的 SQL 面試問題之一。
下面是從 EmployeeInfo 表中獲取第一條記錄的查詢:
SELECT * FROM EmployeeInfo WHERE EmpID = (SELECT MIN(EmpID) FROM EmployeeInfo);
這是從 EmployeeInfo 表中獲取最後一條記錄的查詢:
SELECT * FROM EmployeeInfo WHERE EmpID = (SELECT MAX(EmpID) FROM EmployeeInfo);
- 創建一個查詢以檢查傳遞給查詢的值是否遵循 EmployeeInfo 和 EmployeePosition 表的日期格式。
您可以使用 SQL 中的 IsDate() 函數來檢查傳遞的值是否遵循指定的格式。 它相應地返回 1(true) 或 0(false)。 以下是查詢的外觀:
選擇 ISDATE('01/04/2020') 作為“MM/DD/YY”;
運行此查詢將返回 0,因為傳遞的值與指定的格式不匹配。
- 創建查詢以獲取顯示工資等於或大於 150000 的員工。
此請求的查詢將是:
SELECT EmpName FROM Employees WHERE Salary>=150000;
- 編寫查詢以使用日期獲取年份。
您可以通過運行以下查詢從 SQL 服務器中的日期獲取年份:
選擇年份(GETDATE())作為“年份”;
- 創建一個 SQL 查詢以獲取 EmpPostion 和為每個員工職位支付的總工資。
此請求的查詢是:
SELECT EmpPosition, SUM(Salary) from EmployeePosition GROUP BY EmpPosition;
- 編寫查詢以從表中查找重複記錄。
任何 SQL 面試問答指南中最常見的問題之一。
選擇 EmpID、EmpFname、部門 COUNT(*)
FROM EmployeeInfo GROUP BY EmpID、EmpFname、Department
計數(*)> 1;
- 創建一個查詢以從 EmpPosition 表中獲取第三高的薪水。
選擇 TOP 1 薪水
從(
選擇 TOP 3 薪水
FROM 員工表
ORDER BY Salary DESC) AS emp
按工資 ASC 排序;
- 編寫 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;
- 創建查詢以獲取同一部門的員工列表。
這是此請求的查詢:
選擇 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 多個小時的學習和頂級公司的工作協助。