RDBMS 是迄今为止最常用的数据库之一,因此SQL 技能在大多数工作角色中都是必不可少的。在这篇 SQL 面试问题文章中,我将向您介绍有关 SQL(结构化查询语言)的最常见问题。本文是您学习与 SQL、Oracle、MS SQL Server 和 MySQL 数据库相关的所有概念的完美指南。我们的前 65 个 SQL 面试问题文章是一站式资源,您可以从中提高面试准备。
想要提升自己的技能以在职业生涯中取得成功吗?查看热门技术。
让我们开始吧!
SQL 面试题
-
SQL 和 MySQL 有什么区别?
-
SQL 有哪些不同的子集?
-
DBMS 是什么意思?它有哪些不同的类型?
-
SQL中的表和字段是什么意思?
-
SQL 中的连接是什么?
-
SQL中的CHAR和VARCHAR2数据类型有什么区别?
-
什么是主键?
-
什么是约束?
-
DELETE 和 TRUNCATE 语句有什么区别?
-
什么是唯一键?
Q1。SQL 和 MySQL 有什么区别?
SQL | MySQL |
---|---|
SQL 是一种标准语言,代表基于英语的结构化查询语言 | MySQL 是一个数据库管理系统。 |
SQL是关系型数据库的核心,用于访问和管理数据库 | MySQL 是一个 RDMS(关系数据库管理系统),例如 SQL Server、Informix 等。 |
Q2。SQL 有哪些不同的子集?
-
数据定义语言 (DDL) – 它允许您对数据库执行各种操作,例如 CREATE、ALTER 和 DELETE 对象。
-
数据操作语言(DML)——它允许您访问和操作数据。它可以帮助您从数据库中插入、更新、删除和检索数据。
-
数据控制语言(DCL)——它允许您控制对数据库的访问。示例 – 授予、撤销访问权限。
Q3。DBMS 是什么意思?它有哪些不同的类型?
数据库管理系统 ( DBMS ) 是与用户、应用程序和数据库本身交互以捕获和分析数据的软件应用程序。 数据库是结构化的数据集合。
DBMS 允许用户与数据库进行交互。 存储在数据库中的数据可以修改、检索和删除,可以是任何类型,如字符串、数字、图像等。
DBMS 有两种类型:
-
关系数据库管理系统:数据存储在关系(表)中。示例——MySQL。
-
非关系数据库管理系统:没有关系、元组和属性的概念。示例 – MongoDB
让我们转到此 SQL 面试问题中的下一个问题。
Q4。什么是关系数据库管理系统?它与 DBMS 有何不同?
关系数据库管理系统 (RDBMS) 是一组应用程序和功能,允许 IT 专业人员和其他人开发、编辑、管理关系数据库并与之交互。大多数商业关系数据库管理系统使用结构化查询语言 (SQL) 来访问以表格形式存储的数据库。 RDBMS 是全球企业中使用最广泛的数据库系统。它提供了一种存储和检索大量数据的稳定方法。
通常,数据库保存可在其他应用程序中访问和使用的数据集合。数据库平台的开发、管理和使用都由数据库管理系统支持。
关系数据库管理系统 (RDBMS) 是一种数据库管理系统 (DBMS),它将数据存储在链接相关数据组件的基于行的表结构中。RDBMS 包含确保数据的安全性、准确性、完整性和一致性的功能。这与数据库管理系统使用的文件存储不同。
以下是数据库管理系统和关系数据库管理系统之间的一些进一步区别:
允许使用系统的用户数量 DBMS 一次只能处理一个用户,而 RDBMS 可以处理多个用户。 硬件和软件规范 与 RDBMS 相比,DBMS 需要更少的软件和硬件。 信息量 RDBMS 可以处理任何数量的数据,从微小到巨大,而 DBMS 仅限于少量。 数据库的结构 数据以分层格式存储在 DBMS 中,而 RDBMS 使用带有作为列名的表头和保存相关值的行的表。 ACID 原则的实施 DBMS 不使用原子性、一致性、隔离性和持久性 (ACID) 概念进行数据存储。另一方面,RDBMS 使用 ACID 模型来组织数据并确保一致性。 分布式 数据库 DBMS 不会为分布式数据库提供完整的支持,而 RDBMS 会。 受管理的程序 DBMS 专注于保存存在于计算机网络和系统硬盘中的数据库,而 RDBMS 帮助管理其合并的数据表之间的关系。 支持 数据库规范化 RDBMS 可以规范化,但 DBMS 不能规范化。
Q5。什么是自联接?
自联接是一种可用于连接两个表的联接。因此,它是一元关系。表的每一行都附加到自身以及同一个表的所有其他行以自联接。因此,自联接主要用于组合和比较同一数据库表中的行。
Q6。什么是 SELECT 语句?
SELECT 命令从一个或多个数据库表或视图中获取零个或多个行。在大多数应用程序中,最常用的数据操作语言 (DML) 命令是 SELECT。SELECT 查询定义了一个结果集,但没有定义如何计算它,因为 SQL 是一种声明性编程语言。
问题 7。SQL 中的 SELECT 查询使用了哪些常用子句?** **
以下是与 SELECT 查询结合使用的一些常见 SQL 子句:
WHERE子句:在 SQL 中,WHERE 子句用于根据特定条件过滤所需的记录。 ORDER BY子句:SQL 中的 ORDER BY 子句用于根据指定字段 (DESC) 以升序 (ASC) 或降序 (DESC) 顺序对数据进行排序。 GROUP BY子句:SQL 中的 GROUP BY 子句用于对具有相同数据的条目进行分组,并且可以与聚合方法一起使用以获取汇总的数据库结果。 SQL 中的HAVING子句结合 GROUP BY 子句用于过滤记录。它与 WHERE 不同,因为 WHERE 子句不能过滤聚合记录。
Q8。什么是 UNION、MINUS 和 INTERSECT 命令?
UNION 运算符用于组合两个表的结果,同时还删除重复的条目。 MINUS 运算符用于从第一个查询返回行,而不是从第二个查询返回行。 INTERSECT 运算符用于将两个查询的结果组合成一行。 在运行上述任一 SQL 语句之前,必须满足某些要求—— 在子句中,每个 SELECT 查询必须具有相同数量的列。 列中的数据类型也必须具有可比性。 在每个 SELECT 语句中,列的顺序必须相同。
问题 9。什么是光标?如何使用光标?
在任何变量声明之后,声明一个游标。SELECT 语句必须始终与游标定义相结合。
要启动结果集,请将光标移到它上面。在从结果集中获取行之前,必须执行 OPEN 语句。
要检索并转到结果集中的下一行,请使用 FETCH 命令。
要禁用光标,请使用 CLOSE 命令。
最后,使用 DEALLOCATE 命令删除游标定义并释放与其相关的资源。
问题 10。列出 SQL 中不同类型的关系。
数据库中有不同类型的关系:
一对一- 这是两个表之间的连接,其中一个表中的每条记录对应于另一个表中一条记录的最大值。
一对多和多对一——这是最常见的连接,其中一个表中的一条记录链接到另一个表中的多条记录。
多对多——这在定义需要在每一侧都有多个实例的关系时使用。
自引用关系——当表必须声明与自身的连接时,这是采用的方法。
问题 12。什么是 OLTP?
OLTP 或在线事务处理允许大量人员实时执行大量数据库事务,通常是通过 Internet。当数据库中的数据被更改、插入、删除或查询时,就会发生数据库事务。
问题 13。OLTP 和 OLAP 有什么区别?
OLTP 代表在线事务处理,而 OLAP 代表在线分析处理。OLTP 是一个在线数据库修改系统,而 OLAP 是一个在线数据库查询响应系统。
问题 14。如何创建与另一个表结构相同的空表?
创建空表: 使用 INTO 运算符将一个表的记录提取到新表中,同时将所有条目的 WHERE 子句设置为 false,可以创建具有相同结构的空表。结果,SQL 创建了一个具有重复结构的新表来接受获取的条目,但是由于 WHERE 子句处于活动状态,因此没有任何内容存储到新表中。
问题 15。什么是 PostgreSQL?
1986 年,由计算机科学教授 Michael Stonebraker 领导的一个团队以 Postgres 的名义创建了 PostgreSQL。它旨在通过确保系统中的数据完整性和容错性来帮助开发人员开发企业级应用程序。PostgreSQL 是一个企业级、多功能、弹性、开源、对象关系数据库管理系统,支持可变工作负载和并发用户。国际开发者社区一直支持它。由于其容错特性,PostgreSQL 在开发人员中获得了巨大的吸引力。 它是一个非常可靠的数据库管理系统,其高水平的弹性、完整性和准确性值得感谢 20 多年的社区工作。许多在线、移动、地理空间和分析应用程序使用 PostgreSQL 作为它们的主要数据存储或数据仓库。
问题 16。什么是 SQL 注释?
SQL 注释用于澄清部分 SQL 语句并防止 SQL 语句被执行。注释在许多编程语言中都非常重要。Microsoft Access 数据库不支持这些注释。因此,在 Mozilla Firefox 和 Microsoft Edge 的示例中使用了 Microsoft Access 数据库。 单行注释:它以两个连续的连字符 (–) 开头。 多行注释:以 /* 开头,以 */ 结尾。
问题 17。NVL() 函数的用途是什么?
您可以使用 NVL 函数将空值替换为默认值。如果第一个参数为空,则函数返回第二个参数的值。如果第一个参数不是 null,则将其保留。
这个函数在 Oracle 中使用,而不是在 SQL 和 MySQL 中。MySQL 有 IFNULL() 而不是 NVL() 函数,SQL Server 有 ISNULL() 函数。
让我们转到此 SQL 面试问题中的下一个问题。
问题 18。解释字符操作函数?解释它在 SQL 中的不同类型。
使用字符操作例程更改、提取和编辑字符串。该函数将对输入字符串执行其操作,并在提供一个或多个字符和单词时返回结果。
SQL中的字符操作函数如下:
A) CONCAT(连接两个或多个值):此函数用于将两个或多个值连接在一起。第二个字符串总是附加到第一个字符串的末尾。
B) SUBSTR:此函数返回从给定起点到给定端点的一段字符串。
C) LENGTH:此函数以数字形式返回字符串的长度,包括空格。
D) INSTR:此函数计算字符串中字符或单词的精确数字位置。
E) LPAD:对于右对齐的值,它返回左侧字符值的填充。
F) RPAD:对于左对齐的值,它返回右侧字符值的填充。
G) TRIM:此函数从字符串的开头、结尾或两端删除所有已定义的字符。它还减少了浪费的空间量。
H) REPLACE:此函数用指定的其他字符串值替换单词的所有实例或字符串的一部分(子字符串)。
问题 19。编写 SQL 查询以从名为 employees 的表中获取员工的第三个最高薪水。
员工表
员工姓名 | 薪水 |
---|---|
一个 | 24000 |
C | 34000 |
D | 55000 |
乙 | 75000 |
F | 21000 |
G | 40000 |
H | 50000 |
选择 * 从(
选择员工姓名、工资、DENSE_RANK()
OVER(O