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 计划