SQL 查询面试问题与答案

2025年3月17日 | 阅读11分钟

在本文中,您将学习 IT 面试中遇到的许多简单和复杂的 SQL 查询。我们使用两个表来解决各种查询。第一个表名为 Student, 第二个表名为 Subject。

Student 表包含 Student_ID、Stu_Name、Stu_Subject_ID、Stu_Marks 和 Stu_Age 列,而 Subject 表包含 Subject_ID 和 Subject_Name 列。

Student 表

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
101阿希尔 (Akhil)BCA1018520
102巴尔拉姆 (Balram)BCA1047819
103BheemBCA1028022
104切坦 (Chetan)BCA1039520
105迪克莎 (Diksha)BCA1049920
106拉曼 (Raman)BCA1058819
107SheetalBCA1039822

列名表 (Column Table)

科目编号 (Subject_ID)科目名称 (Subject_Name)
BCA101C
BCA102C++
BCA103管理原理 (Principle of Management)
BCA104Core Java
BCA105数学
BCA106Android

查询 1:编写一个 SQL 查询来创建表。

在 SQL 中创建表的语法

我们可以使用 Create Table 关键字创建表。此关键字一次只能创建一个表。

示例

示例 1

以下示例创建 Student 表

示例 2

以下示例创建 Subject 表


查询 2:编写一个查询将数据插入表中。

将数据插入表的语法

我们可以使用 SQL 中的 INSERT 语句轻松插入记录。

示例

示例 1

以下查询将学生数据插入 Student 表

示例 2

以下查询将 Subject_ID 和 Subject_Name 插入 Subject 表


查询 3:编写一个查询,使用 WHERE 子句查看表的特定记录。

从表中访问特定记录的语法

示例

示例 1

以下查询显示所有年龄为 20 岁的学生的行

此查询中的 WHERE 子句仅显示满足指定条件的行。

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
101阿希尔 (Akhil)BCA1018520
104切坦 (Chetan)BCA1039520
105迪克莎 (Diksha)BCA1049920

示例 2: 以下查询显示 Subject_ID 为 BCA103 和 BCA106 的科目的 Subject_Name

此查询中的 WHERE 子句仅显示满足指定条件的行。

输出

科目编号 (Subject_ID)科目名称 (Subject_Name)
BCA103管理原理 (Principle of Management)
BCA106Android

查询 4:编写一个 SQL 查询以从整数列中查找最小值和最大值

从列中查找最大值和最小值的语法

我们可以使用 MAX 和 MIN 聚合函数轻松查找任何整数列的最大值和最小值。

示例

以下查询显示 Student 表中 Stu_Marks 列的最大和最小分数


查询 5:编写一个查询以从 SQL 表中访问第一条记录?

从表中查找第一条记录的语法

我们可以通过在 SELECT 语句的 WHERE 子句中将 Rownum 关键字赋值为 1 来轻松查找任何表的第一行。

示例

以下查询显示学生表的第一行作为输出

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
101阿希尔 (Akhil)BCA1018520

查询 6:编写一个查询以从表中访问最后一条记录?

从表中查找第一条记录的语法

我们可以使用上述语法轻松查找任何表的最后一行。

示例

以下查询显示学生表的最后一行作为输出

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
107SheetalBCA1039822

查询 7:编写一个查询以从表中访问前 N 行?

从表中查找前 N 条记录的语法

我们可以使用 Rownum 关键字轻松检索任何表的前五行。我们需要为此操作使用“小于等于”比较运算符。

这里,N 定义了要在输出中显示的行数。

示例

以下查询显示学生表的前五行作为输出

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
101阿希尔 (Akhil)BCA1018520
102巴尔拉姆 (Balram)BCA1047819
103BheemBCA1028022
104切坦 (Chetan)BCA1039520
105迪克莎 (Diksha)BCA1049920

查询 8:编写一个查询以从 SQL 表中访问最后 N 行?

从表中查找最后 N 条记录的语法

我们可以使用 Rownum 关键字轻松检索任何表的前五行。

示例

以下查询显示 Subject 表的最后四行

输出

科目编号 (Subject_ID)科目名称 (Subject_Name)
BCA103管理原理 (Principle of Management)
BCA104Core Java
BCA105数学
BCA106Android

查询 9:编写一个 SQL 查询以仅从表中检索偶数行?

从表中查找偶数行的语法

我们可以通过在 SELECT 语句的 WHERE 子句中使用 MOD 函数轻松从表中检索偶数行。

示例

以下查询在结果中显示学生表的偶数行

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
102巴尔拉姆 (Balram)BCA1047819
104切坦 (Chetan)BCA1039520
106拉曼 (Raman)BCA1058819

查询 10:编写一个 SQL 查询以仅从表中检索奇数行?

从表中查找奇数行的语法

我们可以通过在 SELECT 语句的 WHERE 子句中使用 MOD 函数轻松从表中检索奇数行。

示例

以下查询在结果中显示学生表的奇数行

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
101阿希尔 (Akhil)BCA1018520
103BheemBCA1028022
105迪克莎 (Diksha)BCA1049920
107SheetalBCA1039822

查询 11:编写一个 SQL 查询以创建一个与现有表具有相同数据和结构的新表。

语法

示例:以下查询从现有 Student 表创建 Student_Marks 表


查询 12:编写一个查询以查找表中整数列的第 N 个最高值。

语法

示例

以下查询显示学生表的第 3 个最高分数


查询 13:编写一个 SQL 查询以查找表中整数列的第二高值?

查找整数列第二高值的语法

示例

以下查询显示学生表的第二高分数


查询 14:编写一个 SQL 查询以查看当前日期和时间。


查询 15:编写一个 SQL 查询以显示表中整数列的三个最高值的记录。

语法

示例

以下查询显示学生表中三个最高分数的记录

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
105迪克莎 (Diksha)BCA1049920
107SheetalBCA1039822
104切坦 (Chetan)BCA1039520

查询 16:编写一个 SQL 查询以获取年龄为 20 岁的学生的 Stu_Name 和 Stu_Marks。

为此操作,您必须在 SELECT 语句中使用 WHERE 子句。

输出

学生姓名 (Stu_Name)学生分数 (Stu_Marks)
阿希尔 (Akhil)85
切坦 (Chetan)95
迪克莎 (Diksha)99

查询 17:编写一个查询以显示每个科目的最高分数。

为此操作,您需要将 MAX 函数与 GROUP BY 语句一起使用。

输出

学生编号 (Student_ID)学生科目编号 (Stu_Subject_ID)MAX(Stu_Marks)
101BCA10185
105BCA10499
103BCA10280
107BCA10398
106BCA10588

查询 18:编写一个查询以显示分数大于 82 且年龄为 22 岁的所有学生的记录

在这里,您必须在 WHERE 子句中的两个条件之间使用 AND 运算符。AND 运算符返回与指定条件匹配的记录。

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
107SheetalBCA1039822

查询 19:编写一个查询以显示姓名以“m”字符开头的学生的记录。

在这里,您必须使用 LIKE 运算符,它匹配表中的给定模式。

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
102巴尔拉姆 (Balram)BCA1047819
103BheemBCA1028022

查询 20:编写一个查询以显示所有 Subject_ID 以及其中的学生人数。

解: 以下查询使用 GROUP BY 语句与 COUNT 函数,它返回每个科目中的学生人数。

输出

学生科目编号 (Stu_Subject_ID)学生人数
BCA1011
BCA1042
BCA1021
BCA1032
BCA1051

查询 21:编写一个 SQL 查询以大写形式获取学生表中 Stu_Name 列的值。

以下查询使用 UPPER 函数和其值要以大写形式显示的列名


查询 22:编写一个 SQL 查询以显示学生表中 Stu_Age 的唯一值

以下查询使用 SQL DISTINCT 函数和 Stu_Age


查询 23:编写一个 SQL 查询以显示学生表中字符串列的前 N 个字符。

语法

此语法使用 SUBSTRING 函数,它显示字符串的特定字符。

示例

以下查询显示学生表中 Stu_Name 的前两个字符


查询 24:编写一个 SQL 查询以按 Stu_Name 降序查看学生表中的所有学生详细信息。

在这里,我们必须使用 ORDER BY 子句,它按 Stu_Name 降序显示学生详细信息

输出

学生编号 (Student_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)学生分数 (Stu_Marks)学生年龄 (Stu_Age)
107SheetalBCA1039822
106拉曼 (Raman)BCA1058819
105迪克莎 (Diksha)BCA1049920
104切坦 (Chetan)BCA1039520
103BheemBCA1028022
102巴尔拉姆 (Balram)BCA1047819
101阿希尔 (Akhil)BCA1018520

查询 25:编写一个查询以显示一个表中存在但另一个表中不存在的值。

语法

此语法使用 SQL MINUS 运算符,它显示 Table1 中存在但 Table2 中不存在的值。

示例: 让我们使用另一个表 Student2, 它包含 3 列:Bus_ID、Stu_Name 和 Stu_Address。

公交车编号 (Bus_ID)学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)
1RameshBCA101
6切坦 (Chetan)BCA103
5阿希尔 (Akhil)BCA101
4巴努 (Bhanu)BCA103
3巴尔拉姆 (Balram)BCA104
2RamBCA105

以下查询仅显示学生表中不存在于 Student2 表中的 Stu_Name 和 Stu_Subject_ID 的行

输出

SELECT Stu_Name, Stu_Subject_ID from Student 
MINUS 
SELECT Stu_Name, Stu_Subject_ID from Student2;   

输出

学生姓名 (Stu_Name)学生科目编号 (Stu_Subject_ID)
BheemBCA102
迪克莎 (Diksha)BCA104
拉曼 (Raman)BCA105
SheetalBCA103

查询 26:编写一个 SQL 查询以显示表中整数列的三个最小值。

语法

示例

以下查询显示学生表的三个最低分数


查询 27:编写一个查询以查找表中整数列的平均值。

语法

示例

以下查询查找学生表分数的平均值


查询 28:编写一个查询以在 SQL 中创建视图,

语法

示例

以下查询创建学生表中分数大于 85 的学生的视图

您可以使用以下查询查看视图表

输出

学生姓名 (Stu_Name)学生年龄 (Stu_Age)
切坦 (Chetan)20
迪克莎 (Diksha)20
Sheetal22

查询 29:编写一个查询以在现有表中添加另一列

语法

如果您想在现有表中添加另一列或字段,则必须在 SQL 中使用 ALTER 语句。

示例

以下查询将 Stu_Address 列添加到现有 Student 表中


查询 30:编写一个查询以将任何值转换为特定的 SQL 数据类型。

以下查询将浮点值转换为整数类型。