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 多个小时的学习和顶级公司的工作协助。