50 年 2025 个 SQL 面试问题及答案

以下是 SQL 面试问题和答案,可帮助新手和有经验的应聘者获得理想的工作。

 

面向新手的 SQL 面试问题

1. 什么是 DBMS?

数据库管理系统(DBMS) 是控制数据库的创建、维护和使用的程序。DBMS 可以称为文件管理器,它管理数据库中的数据,而不是将其保存在文件系统中。

👉 免费 PDF 下载: SQL 面试问题与答案 >>


2.什么是 RDBMS?

RDBMS 代表关系数据库管理系统。RDBMS 将数据存储到表集合中,这些表通过表列之间的公共字段相关联。它还提供关系运算符来操作存储在表中的数据。

例如:SQL Server。


3.什么是 SQL?

SQL 代表结构化查询语言,用于与数据库通信。这是一种用于执行从数据库检索、更新、插入和删除数据等任务的标准语言。
标准版 SQL命令 是選擇。


4.什么是数据库?

数据库只不过是一种有组织的数据形式,便于访问、存储、检索和管理数据。这也称为结构化数据形式,可以通过多种方式访问​​。

例如:学校管理数据库、银行管理数据库。


5.什么是表和字段?

表格是一组以列和行的形式组织的数据。列可以归类为垂直的,而行是水平的。表格具有指定数量的列(称为字段),但可以有任意数量的行(称为记录)。

例子:。

表:员工。

字段:员工 ID、员工姓名、出生日期。

数据:201456,David,11 年 15 月 1960 日。


6.什么是主键?

A 主键 是唯一指定一行的字段组合。这是一种特殊的唯一键,它具有隐式 NOT NULL 约束。这意味着主键值不能为 NULL。


7. 什么是唯一键?

唯一键约束唯一地标识了数据库中的每条记录。这为列或列集提供了唯一性。

主键约束上定义了自动唯一约束。但是,唯一键则不是。

每个表可以定义多个唯一约束,但每个表只能定义一个主键约束。


8.什么是外键?

外键是可以与另一个表的主键关联的表。需要通过引用外键和另一个表的主键来在两个表之间创建关系。


9.什么是连接?

这是用于根据表字段之间的关系从多个表中查询数据的关键字。使用 JOIN 时,键起主要作用。


10. 连接的类型有哪些?分别解释一下?

这里有 各种类型的连接 它可用于检索数据,并且取决于表之间的关系。

  • 内部联接。

当表之间至少有一行匹配时,内连接返回行。

  • 右连接。

右连接返回表之间共有的行以及右侧表的所有行。简单来说,它返回右侧表的所有行,即使左侧表中没有匹配项。

  • 左连接。

左连接返回表之间共有的行以及左侧表的所有行。简单来说,它返回左侧表的所有行,即使右侧表中没有匹配项。

  • 全面加入。

当任何一个表中有匹配的行时,全连接将返回行。这意味着,它返回左侧表中的所有行和右侧表中的所有行。


针对 3 年经验的 SQL 面试问题

11.什么是标准化?

规范化是通过组织数据库的字段和表来最小化冗余和依赖性的过程。规范化的主要目的是添加、删除或修改可以在单个表中进行的字段。


12.什么是非规范化?

非规范化是一种用于从数据库的较高范式到较低范式访问数据的技术。它也是通过合并相关表中的数据将冗余引入表中的过程。


13. 有哪些不同的规范化?

数据库规范化 借助案例研究,很容易理解。范式可以分为 6 种形式,解释如下 -。

数据库范式
数据库范式

  • 第一范式(1NF):。

这应该会从表中删除所有重复的列。为相关数据创建表并标识唯一列。

  • 第二范式(2NF):。

满足第一范式的所有要求。将数据子集放在单独的表中,并使用主键在表之间创建关系。

  • 第三范式(3NF):。

这应该满足 2NF 的所有要求。删除不依赖于主键约束的列。

  • 第四范式(4NF):。

如果没有任何数据库表实例包含两个或多个描述相关实体的独立多值数据,则它属于 4th 正常形式。

  • 第五范式(5NF):。

仅当表符合 5NF 时,它才符合第五范式,并且它不能在不丢失数据的情况下分解为任意数量的较小表。

  • 第六范式(6NF):。

第六范式尚未标准化,但数据库专家已经讨论了一段时间。希望在不久的将来,我们能对第六范式有一个清晰而标准化的定义……


14.什么是视图?

视图是包含表中数据子集的虚拟表。视图并非虚拟存在,存储所需的空间较少。视图可以包含一个或多个表的数据,具体取决于关系。


15.什么是索引?

索引是一种性能调优方法,可以更快地从表中检索记录。索引为每个值创建一个条目,这样可以更快地检索数据。


16. 有哪些不同类型的指数?

索引有三种类型-。

  • 单一索引。

如果列是唯一索引,则此索引不允许字段具有重复值。定义主键时可以自动应用唯一索引。

  • Cluster编辑索引。

这种类型的索引会重新排列表的物理顺序,并根据键值进行搜索。每个表只能有一个聚集索引。

  • 不刻字Cluster编辑索引。

不刻字Clustered 索引不会改变表的物理顺序,并保持数据的逻辑顺序。每个表可以有 999 个非聚集索引。


17.什么是游标?

数据库游标是一种控件,可用于遍历表中的行或记录。这可以看作是指向一组行中的一行的指针。游标对于遍历(例如检索、添加和删除数据库记录)非常有用。


18. 什么是关系以及关系是什么?

数据库关系定义为数据库中表之间的连接。数据库关系有多种,如下所示:

  • 一对一关系。
  • 一对多关系。
  • 多对一关系。
  • 自参照关系。

19.什么是查询?

DB 查询是为了从数据库获取信息而编写的代码。查询可以设计成与我们对结果集的期望相匹配。简单来说,就是向数据库提出问题。


20.什么是子查询?

子查询是另一个查询中的查询。外部查询称为主查询,内部查询称为子查询。子查询总是先执行,子查询的结果传递给主查询。

让我们看一下子查询语法 –

MySQL 带有示例的子查询教程

MyFlix 视频库的一个常见客户投诉是电影数量太少。管理层希望购买电影数量最少的类别的电影。

您可以使用类似以下查询
SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);


针对 5 年经验的 SQL 面试问题

21.子查询有哪些类型?

子查询有两种类型——相关和非相关。

相关子查询不能被视为独立查询,但它可以引用主查询的 FROM 列表中列出的表中的列。

非相关子查询可以被视为独立查询,并且子查询的输出将替换主查询。


22.什么是存储过程?

存储过程是访问数据库系统的由多条 SQL 语句组成的函数。多条 SQL 语句被合并为一个存储过程,并在需要时随时随地执行它们。


23. 什么是触发器?

DB 触发器是响应数据库中表或视图上的某些事件而自动执行的代码或程序。触发器主要帮助维护数据库的完整性。

示例:当新学生添加到学生数据库时,应在相关表(如考试表、分数表和出勤表)中创建新记录。


24. DELETE 和 TRUNCATE 命令有什么区别?

DELETE 命令用于从表中删除行,WHERE 子句可用于条件参数集。删除语句后可以执行提交和回滚。

TRUNCATE 从表中删除所有行。截断操作无法回滚。


25.什么是局部变量和全局变量以及它们的区别?

局部变量是函数内部可以使用或存在的变量。其他函数不知道它们,并且不能引用或使用这些变量。只要调用该函数,就可以创建变量。

全局变量是可以在整个程序中使用或存在的变量。在全局中声明的相同变量不能在函数中使用。每次调用该函数时都不能创建全局变量。


26.什么是约束?

约束可用于指定对表的数据类型的限制。约束可以在创建或修改表语句时指定。约束的示例是。

  • 非空。
  • 检查。
  • 默认。
  • 独特。
  • 首要的关键。
  • 外键。

27.什么是数据 Integrity?

时间 Integrity 定义数据库中存储的数据的准确性和一致性。它还可以定义完整性约束,以便在数据输入应用程序或数据库时强制执行业务规则。


28.什么是自动增量?

自动增量关键字允许用户创建一个唯一的数字,当新记录插入到表中时生成该数字。AUTO INCREMENT 关键字可用于 Oracle 并且IDENTITY关键字可以在SQL SERVER中使用。

大多数情况下,只要使用 PRIMARY KEY 就可以使用此关键字。


29. 有什么区别 Cluster 和非Cluster 指数?

Clustered 索引用于通过改变记录的存储方式轻松地从数据库中检索数据。数据库根据设置为聚集索引的列对行进行排序。

非聚集索引不会改变其存储方式,而是在表中创建一个完全独立的对象。搜索后,它会指向原始表行。


30.什么是数据仓库?

数据仓库是来自多个信息源的数据的中央存储库。这些数据经过整合、转换,可供挖掘和在线处理。仓库数据有一个称为数据集市的数据子集。


31.什么是自连接?

自连接设置为用于与自身进行比较的查询。这用于将某一列中的值与同一表中同一列中的其他值进行比较。ALIAS ES 可用于同一表比较。


32.什么是Cross-Join?

交叉连接定义为笛卡尔积,其中第一个表中的行数乘以第二个表中的行数。假设在交叉连接中使用 WHERE 子句,则查询将像 INNER JOIN 一样工作。


33.什么是用户定义函数?

用户定义函数是编写的函数,在需要时使用该逻辑。无需多次编写相同的逻辑。相反,可以在需要时调用或执行函数。


34. 用户定义函数有哪些类型?

用户定义函数有三种类型。

  • 标量函数。
  • 内联表值函数。
  • 多语句值函数。

标量返回单元,变体定义了返回子句。其他两种类型将表作为返回值返回。


35. 什么是排序规则?

排序规则被定义为一组规则,用于确定如何对字符数据进行排序和比较。这可用于比较 A 和其他语言的字符,并且还取决于字符的宽度。

可以使用 ASCII 值来比较这些字符数据。


36. 排序敏感度有哪些不同类型?

以下是不同类型的排序敏感度 -。

  • 区分大小写 — A 和 a 和 B 和 b。
  • 口音敏感度。
  • 假名敏感度 – 日语假名字符。
  • 宽度敏感度——单字节字符和双字节字符。

37. 存储过程的优点和缺点?

存储过程可以用作模块化编程 - 意味着创建一次,存储并在需要时多次调用。这支持更快的执行,而不是执行多个查询。这减少了网络流量并为数据提供了更好的安全性。

缺点是它只能在数据库中执行,并且占用数据库服务器中的更多内存。


38.什么是联机事务处理(OLTP)?

联机事务处理 (OLTP) 管理基于事务的应用程序,可用于数据输入、数据检索和数据处理。OLTP 使数据管理变得简单而高效。与 OLAP 系统不同,OLTP 系统的目标是服务于实时事务。

例如——每日的银行交易。


39. 什么是CLAUSE?

SQL 子句通过为查询提供条件来限制结果集。这通常会从整个记录集中过滤掉一些行。

示例 – 具有 WHERE 条件的查询

具有 HAVING 条件的查询。


40.什么是递归存储过程?

一个存储过程,它会自行调用,直到达到某个边界条件。此递归函数或过程可帮助程序员多次使用同一组代码。


10 年以上经验的 SQL 面试问题

41. 什么是并集、减集和并集命令?

UNION 运算符用于合并两个表的结果,并从表中删除重复的行。

MINUS 运算符用于返回第一个查询的行,但不返回第二个查询的行。第一个和第二个查询的匹配记录以及第一个查询的其他行将显示为结果集。

INTERSECT 运算符用于返回两个查询返回的行。


42.什么是 ALIAS 命令?

可以为表或列指定别名。此别名可以在 WHERE 子句 识别表或列。

例子-。

Select st.StudentID, Ex.Result from student st, Exam as Ex where st.studentID = Ex. StudentID

这里,st 表示学生表的别名,Ex 表示考试表的别名。


43. TRUNCATE 和 DROP 语句有什么区别?

TRUNCATE 从表中删除所有行,并且无法回滚。DROP 命令从数据库中删除表,并且操作无法回滚。


44.什么是聚合函数和标量函数?

聚合函数用于评估数学计算并返回单个值。这可以从表中的列计算得出。标量函数根据输入值返回单个值。

例子 -。

聚合 – max(),count – 根据数字计算。

标量 – UCASE()、NOW() – 根据字符串计算。


45. 如何从现有表创建空表?

例如-。

Select * into studentcopy from student where 1=2

在这里,我们将学生表复制到具有相同结构的另一个表,但没有复制任何行。


46. 如何从两个表中获取公共记录?

常见的记录结果集可以通过-来实现。

Select studentID from student INTERSECT Select StudentID from Exam

47. 如何从表中获取替代记录?

可以获取奇数行和偶数行的记录 -。

显示偶数-。

Select studentId from (Select rowno, studentId from student) where mod(rowno,2)=0

显示奇数-。

Select studentId from (Select rowno, studentId from student) where mod(rowno,2)=1

从(从学生中选择 rowno,studentId)其中 mod(rowno,2)=1。[/sql]


48. 如何从表中选择唯一的记录?

使用 DISTINCT 关键字从表中选择唯一记录。

Select DISTINCT StudentID, StudentName from Student.

49. 获取字符串前 5 个字符的命令是什么?

有很多方法可以获取字符串的前 5 个字符 -。

Select SUBSTRING(StudentName,1,5) as studentname from student
Select LEFT(Studentname,5) as studentname from student

50. 查询中用哪个运算符进行模式匹配?

LIKE 运算符用于模式匹配,可以用作-。

  1. % – 匹配零个或多个字符。
  2. _(下划线)——匹配一个字符。

例子 -。

Select * from Student where studentname like 'a%'
Select * from Student where studentname like 'ami_'

这些面试问题也会对你的口试有帮助