19 个必读的 SQL 面试问题和答案:适合 2022 年的初学者和经验丰富的人

已发表: 2021-01-07

SQL面试问题和答案

担心你的面试? 我们为您的 SQL 面试问题提供了保障。 这些是 Sql Interviews 中最常见的几个问题。
无论您在软件和 IT 行业选择什么工作角色,SQL 技能都是必须的。 即使在今天,RDBMS 仍然是世界上使用最广泛的数据库之一,因此,SQL 是开发领域不可或缺的一部分。 像 Uber、Netflix、Airbnb 等大公司,当然还有微软使用 SQL 作为他们的主要数据库管理工具。

SQL 在今天广受欢迎的原因是它支持企业 IT 环境中的大量事务处理、分析应用程序和商业智能操作。

在这篇文章中,我们将帮助您开始了解 SQL 的基础知识。 这就是为什么我们创建了一个最常见的 SQL 面试问题列表。 希望 SQL 面试题对你的面试有所帮助。 这些SQL 面试问题将使您对 SQL 的基本概念以及您应该如何处理它有一个相对较好的了解。

顶级 SQL 面试问题和答案

1. 定义 SQL。

SQL 或结构化查询语言是 Microsoft 创建的关系数据库管理系统。 它是专门为与数据库通信而设计的。 ANSI(美国国家标准协会)认为 SQL 是关系数据库管理系统 (RDBMS) 的标准查询语言。

它不仅用于维护 RDBMS,还用于对不同类型的数据执行广泛的其他数据操作操作。 例如,SQL 用于创建数据库、在数据库中创建表、从数据库中检索数据、更新数据库中的表、执行查询等。

阅读更多:用于数据科学的 SQL:为什么使用 SQL

2. 定义数据库。

数据库是指一种结构化的数据形式,它以有组织的形式存储在计算机中,以方便其对数据的访问、存储、检索和管理。 数据库本质上是模式、表、查询、视图等的集合。

3. RDBMS 与 DBMS 有何不同?

RDBMS 或关系数据库管理系统与 DBMS 不同,因为 RDBMS 将数据存储为表的集合,您可以在其中定义表的公共字段之间的关系,而在 DBMS 中,您不能这样做。

与以表格形式存储数据的 RDBMS 不同,DBMS 的功能更像是文件管理器,将数据存储在数据库中,而不是将其保存在文件系统中。

RDBMS 是许多现代数据库管理系统的基础,例如 MySQL、Microsoft SQL Server、Oracle、IBM DB2 和 Amazon Redshift。

4. 定义约束。

在 SQL 中,约束用于指定对表的数据类型的限制或声明与数据库中表中的数据有关的规则。 可以在创建表期间或在使用 ALTER TABLE 命令创建表之后为 SQL 表中的单个字段和多个字段指定约束。

SQL 中的一些约束是:

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

5. 定义——主键、唯一键和外键。

主键是有助于唯一指定行的字段组合。 主键必须具有唯一值,并且它还包含隐式 NOT NULL 约束,这意味着主键不能具有 NULL 值。

唯一键约束用于确保列中的所有值都不同。 它有助于唯一地识别数据库中的每条记录。 与主键不同(每个表只定义一个主键),每个表可以定义多个唯一约束。

外键由一个表中的单个或一组字段组成,可用于引用另一个表的主键。 此键有助于维护两个表之间关系的参照完整性。 包含外键约束的表称为子表,而包含候选键的表称为父表。

6. 定义连接。 有哪些不同类型的联接?

Join 是一个 SQL 子句,旨在根据它们之间的相关列组合来自两个或多个表的记录或行。 Join 就像一个关键字,用于根据表的字段之间的关系从更多的表中查询数据。 它们主要用于检索数据。 但是,数据检索很大程度上取决于表之间的关系。

有四种类型的连接:

  • Inner Join – 这用于返回表之间至少包含一个匹配值的记录或行。
  • 右连接 - 这将返回表与右侧表上的所有其他行之间的共同匹配的行。 简而言之,右连接返回右侧表中的所有行,而不管左侧表中没有可用的匹配项。
  • 左连接 - 与右连接一样,左连接返回表之间共有的行以及位于左侧表中的所有行,即使右侧表中没有可用的匹配项。
  • 完全连接 - 当任何单个表包含匹配的行时,此连接将返回行。 换句话说,它创建了一个包含右连接和左连接结果的集合。 因此,结果集包括左侧表和右侧表中的所有行。

7. 什么是索引? 命名不同类型的索引。

在 SQL 中,索引是一种性能调整方法,可以更快地从表中检索记录。 它们加快了数据库中的搜索过程——索引为每个值创建一个条目,从而更快地检索数据。

索引用于通过仅浏览那些数据子集以找到正确的匹配项来查找与某些列匹配的行。

索引分为三种类型:

  • 唯一索引——该索引确保表中没有两行数据具有相同的键值,从而保持数据完整性。 您可以在定义主键时自动应用唯一索引。
  • 聚集索引 - 此索引有助于重新排序或重新排列表的物理顺序并根据键值进行搜索。 在该索引中,数据库中包含的行的顺序与索引中的行的顺序相对应。 这就是为什么一张表只能有一个聚集索引。
  • 非聚集索引——该索引维护数据的逻辑顺序。 它用于在表中创建一个引用原始表的单独实体。 一个表可以有多个非聚集索引。

8. 什么是AUTO_INCREMENT?

AUTO_INCREMENT 用于在向表中添加或输入新记录时自动生成唯一编号。 因为一张表只有一个主键,所以这个主键被添加为 AUTO_INCREMENT 字段,有助于在每次添加新记录时递增该字段。

默认情况下,AUTO-INCREMENT 值从 1 开始,每当插入新记录时,它就会增加 1。

9. 定义查询和子查询。

查询是为从一个或多个数据库表中请求或检索数据而编写的代码。 查询可以是操作查询或选择查询。

另一方面,子查询是另一个查询中的查询。 它也称为内部查询或嵌套查询。 子查询用于限制或增强主查询必须查询的数据,从而限制或增强主查询的结果。 通常,首先执行子查询,然后将结果传递给主查询。

有两种类型的子查询:

  • 相关子查询 - 此子查询不是独立查询。 但是,它可以引用主查询的 FROM 中列出的表中的列。
  • 非相关子查询——这是一个独立的查询,它的输出在主查询中被替换。

10. 定义触发器。

触发器是存储的代码或程序,在发生 INSERT、DELETE、UPDATE(DML) 语句等事件时自动执行。 它们也可以作为对数据定义语句 (DDL) 和数据库操作(如 SERVER ERROR、LOGON 等)的响应而执行。触发器有助于维护数据库的完整性。

11. 解释 ACID 属性在事务中的作用。

遵循 ACID 属性以在事务之前和之后保持数据库中的一致性。

  • 原子性——这意味着必须完成一个事务。 它不应该中途离开。 如果一个事务失败,整个事务就会失败,而数据库将保持不变。
  • 一致性——这旨在通过验证输入数据库的数据来维护完整性约束。
  • 隔离 – 此属性旨在控制并发性。
  • 持久性——此属性确保一旦事务完成,尽管可能出现任何挑战(例如,断电、内部错误等),它仍保持提交状态。

12. 区分 DELETE 和 TRUNCATE 命令。

DELETE 和 TRUNCATE 命令的核心区别如下:

  • DELETE 命令用于删除或移除一个或多个现有表,而 TRUNCATE 命令删除表内的所有数据。
  • DELETE 是 DML 命令,而 TRUNCATE 是 DDL 命令。
  • DELETE 允许您完成触发,但 TRUNCATE 不允许您执行和触发。
  • 当外键约束引用表时,TRUNCATE 命令不起作用。 在这种情况下,您必须使用 DELETE 命令。

13. 命名 SQL 的不同子集。

SQL 的子集包括:

  • DDL(数据定义语言)——该语言使您能够对数据库执行大量操作,包括 SQL 命令,如 CREATE、ALTER 和 DELETE 对象。
  • DML(数据操作语言)——该语言允许您使用 INSERT、UPDATE 和 DELETE 等命令访问和操作数据库中的数据。
  • DCL(数据控制语言)——这种语言允许您通过使用 GRANT 和 REVOKE 等命令来控制对数据库的访问。

阅读: 2020 年 9 大数据科学工具

14. 解释数据完整性。

数据完整性定义了存储在数据库中的数据的准确性、一致性和可靠性。 此外,它有助于定义完整性约束,以便在将数据插入数据库或应用程序时对数据实施业务规则。

数据完整性有四种:

  • 行完整性
  • 色谱柱完整性
  • 参照完整性
  • 用户定义的完整性

15. 什么是用户自定义函数? 命名用户定义函数的类型。

用户定义的函数是专门为在需要时使用特定逻辑而编写的函数。 这些功能消除了多次编写相同逻辑的需要; 相反,您可以在需要时调用或执行用户定义的函数。

用户定义的函数分为三种类型:

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

16. 定义归类。 命名不同类型的整理敏感度。

排序规则是指确定字符数据如何排序和比较的规则集合。 除了定义正确的字符序列来对字符数据进行排序之外,它还包含用于指定区分大小写、重音符号、假名字符类型以及字符宽度的选项。

不同类型的校对敏感度包括:

  • 区分大小写 – 字符“A”和“a”的处理方式不同。
  • 重音敏感度——字符“a”和“ a”的处理方式不同。
  • 假名敏感性 – 这会以不同的方式对待日文假名字符,如平假名和片假名。
  • 宽度敏感度——这将区别对待单字节(半角)字符和双字节(全角)字符。

17. 存储过程是什么意思?

存储过程是用于访问 RDBMS 的应用程序的子例程(SQL 代码)。 它支持模块化编程概念,这意味着您可以创建一个存储过程一次并保存它,并在需要时多次调用它。

这些过程存储在数据库数据字典中。 存储过程的优点是它允许更快的查询执行。 这不仅减少了网络流量,还为数据提供了更好的安全性。

另一个优点是存储过程具有附加功能,因为无法直接访问数据的用户可以使用存储过程来获得访问权限。

但是,它也有一个缺点——存储过程只能在数据库中执行,通常会占用数据库服务器更多的内存。

18. 区分视图和表。

以下是视图和表之间的一些区别:

  • 视图是指从数据库中提取的虚拟表,而表是指包含有限列数和无限行数的结构化实体。
  • 视图本身不能保存数据,而表包含数据并将其存储在数据库中。
  • 视图允许您查询包含在几个不同表中的特定信息。 然而,一个表包含基本的客户信息以及特征对象的案例。

19. 定义临时表。 你怎么能创造一个?

临时表是允许您存储和处理中间结果的表。 这些表在不再使用时可以自动删除。 在需要存储临时数据的情况下,临时表会派上用场。

创建临时表的语法是:

创建表#table_name();

以下查询将创建一个临时表:

创建表 #book(b_id int, b_cost int)

现在,我们将插入记录。

插入 #book 值(1,100)

插入 #book 值(2,232)

从#book中选择*

从世界顶级大学在线学习软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

包起来

我们希望这份SQL 面试问答指南能够帮助您加强和扩展您的 SQL 知识库。

如果您想了解 SQL 以及有关全栈开发的更多信息,请查看 IIIT-B 和 upGrad 的全栈软件开发执行 PG 计划,该计划是为在职专业人士创建的,并提供 10 多个案例研究和项目,实际动手操作研讨会、与行业专家的指导、与行业导师的一对一交流、400 多个小时的学习和顶级公司的工作协助。

全栈软件开发 PG 文凭

立即申请全栈开发的执行 PG 计划