几乎所有面试都会问到SQL面试问题,因为数据库操作在应用中非常常见。 SQL 代表结构化查询语言,它是一种用于数据库通信和关系数据库管理的特定领域编程语言。 SQL 由用于数据库交互的标准命令组成,例如 SELECT、INSERT、CREATE、DELETE、UPDATE、DROP 等。通过这些命令,它允许用户从数据库检索和上传数据、创建和删除表元素以及实现之间的动态数据库交互。服务器和程序。
Listed below are various SQL interview questions and answers that reaffirms your knowledge about SQL and provide new insights and learning about the language. Go through these SQL interview questions to refresh your knowledge before any interview.
-
SQL是一种特定于领域的编程语言,允许您查询和操作以优化方式和分类排列的数据库管理系统中的数据。这可以通过在 SQL 中执行命令来实现,这些命令允许您读取、写入、选择和删除条目甚至相同属性或表的列。 SQL 还提供了一种非常有效的方法,可以在程序、网站或移动应用程序与数据库之间创建动态访问通道。例如,通过在用户网站上输入您的登录详细信息,这些日志信息将通过 SQL 传递到数据库以进行验证和用户限制。 3. ### 数据库和关系数据库有什么区别?
SQL 使用数据库或数据库管理系统(DBMS)和关系数据库管理系统(DBMS)来存储数据和结构。然而,每种类型的数据库管理系统都有不同的用途。两者之间的主要区别在于 DBMS 将信息保存为文件,而 RDMS 以表格形式保存信息。另外,作为关键字关系型意味着,RDMS 允许不同的表使用主键、外键等相互关联。这在表之间创建了一个动态的层次结构链,这也为表提供了有用的限制。 DBMS 通过分层方式或导航方式对其表进行排序。当将数据存储在彼此独立的表中并且您不希望在填充或编辑表时更改其他表时,这非常有用。5。 ### SQL 的基本结构是什么?
SQL 是基于关系操作的结构构建的。它基于某些修改和增强。一个非常基本的 SQL 查询形式是:
select A1, A2, ..., An
from R1, R2, ..., Rm
where P
这里An是属性,Rm是数据库内的关系,P是谓词或过滤器。7. ### SQL 命令有哪些不同类别?
SQL命令分为以下四类:
- DML(数据操作语言)提供数据操作功能
- DDL(数据定义语言)用于操作数据库结构
- TCL(事务控制语言)负责数据事务验证和错误处理
- DCL(数据控制语言)是一种安全声明,具有用户限制和数据访问权限,以提高数据的安全性。
-
SQL 被使用并且在服务器端程序员中很流行,因为它能够以非常快速和简单的方式处理数据库中的大量条目。这为数据检索和操作带来了巨大的改进。为了阐述这一点,SQL 提供了在数据库中执行、检索、插入、更新和删除条目的能力。它还允许创建诸如表、视图和数据库之类的结构,前提是给出唯一的名称。10。 ### 定义 SELECT、INSERT、CREATE、DELETE、UPDATE、DROP 关键字
- SELECT 关键字用于突出显示并获取表或视图中行中的条目。它还可以伴随 AS 关键字来提供别名。为了过滤 SELECT 语句,可以包含 WHERE 子句来提供过滤条件并仅选择满足条件的所需条目。
- INSERT 允许添加或insert数据库表中的一行或多行。伴随 VALUES 关键字,您可以添加具有特定值的行。 INSERT 也可以与 SELECT 一起使用来插入预选的行。
- CREATE 是用于在 SQL 中创建元素的关键字。通常伴随着要创建的关键字,如CREATE DATABASE、CREATE TABLE、CREATE VIEW等。
- DELETE 关键字用于删除数据库中的记录。您应该始终小心使用它,以避免不必要的数据丢失。您可以删除不想删除的记录。使用 WHERE 子句指定要删除的记录的范围。
- UPDATE 关键字更新或更改现有记录中的现有数据。请务必注意,该记录必须存在。
- DROP 关键字删除数据库中的表。
-
SQL 或结构化查询语言是一种用于与关系数据库通信的语言。它提供了一种操作和创建数据库的方法。另一方面,PL/SQL是SQL的一种方言,用于增强SQL的功能。它是由 Oracle 公司在 90 年代初开发的。它在 SQL.13 中添加了编程语言的过程功能。 ### 什么是数据定义语言?
DDL 或数据定义语言属于直接影响数据库结构的 SQL 命令。 DDL 是 SQL 命令分类的一个类别,还包括 DML(数据操作语言)、事务和安全。 DDL 命令的一个特殊属性是可以操作索引、对象、表、视图、触发器等的语句。SQL 中三个流行的 DDL 关键字是:
-
CREATE – 用于创建表
CREATE TABLE tableName (name data_type);
-
ALTER – 用于修改表中的条目或现有列。
ALTER TABLE tableName [additional syntax such as ADD, DROP, MODIFY]
-
DROP – 用于删除或删除现有表及其条目、约束、触发器、索引和权限。本质上是删除表。
DROP TABLE tableName;
-
DML 或数据操作语言是一组命令,根据其授予用户更改数据库中条目的权限的能力进行分类。这可能是通过插入、检索、删除或更新表内的数据。流行的 DML 语句源自这些核心功能,如下所列:
-
TCL是一类SQL命令,主要处理数据库事务和保存点。这些关键字将开发人员定义的 SQL 函数和逻辑实现到数据库结构和行为中。这些 TCL 命令的示例有: COMMIT – 用于提交事务 ROLLBACK – 在出现任何错误时,通过该关键字调用事务回滚。 SAVEPOINT – 代表回滚恢复点的关键字 SET TRANSACTION – 设置事务的细节19。 ### 什么是数据控制语言(DCL)?
数据控制语言或 DCL 监督对用户的访问和限制的发布,包括 SQL 语句中所需的权利和权限。 DCL 关键字示例如下: GRANT – 为用户提供对某些数据库的访问权限的 DCL 关键字。 REVOKE – 与 GRANT 关键字相反。撤销或撤销授予用户的权限。20. ### 定义数据库中的表和字段
就数据库而言,表是指有组织的条目的排列。它进一步分为包含表行不同字段的单元格。字段属于代表单个条目的数据结构。然后将它们进一步组织成记录。它们实际上保存着一条数据。它们是数据内存分配的基本单位,并且是可访问的。21. ### SQL 中的键有哪些不同类型?
键是 RDMS 中的一项重要功能,它们本质上是将一个表链接到另一个表的字段,并通过管理列索引促进快速数据检索和记录。不同类型的键有: 主键 – 标识数据库表中记录的唯一键。唯一意味着它不能为空并且在表中必须是唯一的。候选键 – 独立标识列或列组的唯一字段,无需引用其他字段。备用键 – 可以替代主键,但被视为辅助键。不同之处在于,备用键可以具有 Null 值,前提是列中包含数据。一种候选键,也要求是唯一的。唯一键 – 提供限制以防止行内重复数据(空条目除外)的键。其他可用的键有外键、超级键和复合键。22。 ### 命名 SQL 中不同类型的索引并定义它们。
唯一索引:防止唯一索引列中出现重复条目。如果主键可用,它们会自动生成。聚集索引:用于根据键值组织或编辑表内的排列。每个表只允许有一个聚集索引。非聚集索引:相反,非聚集索引仅管理条目内的逻辑顺序。它不管理排列,表可以有多个非聚集索引。26。 ### SQL 和 MySQL 有什么区别?
SQL 代表标准查询语言,是一种服务器编程语言,提供与数据库字段和列的交互。虽然 MySQL 是一种数据库管理系统,而不是一种实际的编程语言,更具体地说是 RDMS 或关系数据库管理系统。然而,MySQL 也实现了 SQL 语法。27。 ### SQL中的UNION和UNION ALL关键字是什么,它们有什么区别?
SQL 中的 UNION 运算符组合了 SELECT 语句中突出显示的多个集合。该集合的限制是:(1) 列号必须相同,(2) 集合中的数据类型必须相同,(3) SELECT 语句中突出显示的列的顺序必须相同。它会自动消除 SELECT 语句中突出显示的结果中的重复行。 UNION ALL 的功能与 UNION 相同,但它包含所有行,包括重复行。
SELECT C1, C2 FROM T1
UNION
SELECT Cx, Cy FROM T2;
-
join 关键字查询多个表中的条目。它使用不同的键来查找这些条目,并且了解字段之间的链接。
-
内连接:返回表之间公共的行
-
Right Join:返回右侧表的行,包括公共行。
-
Left Join:返回左侧表的行,包括公共行。
-
Full Join:返回所有行,无论是否常见。
-
规范化会排列数据库中的现有表及其字段,从而最大限度地减少重复。它用于在保留唯一字段的同时尽可能地简化表。非规范化允许从数据库内的所有规范形式检索字段。对于标准化,它采取相反的做法,将冗余放入表中32。 ### 什么时候可以使用 WHERE 子句和 HAVING 子句?
这两个子句都接受用作检索字段基础的条件。区别在于 WHERE 子句仅用于静态非聚合列,而 HAVING 子句仅用于聚合列。
select order_id, SUM(sale_amount) as TotalSale
from SalesData
where quantity>1
group by order_id
having SUM(sale_amount) > 100;
-
UNION 关键字在 SQL 中用于组合多个 SELECT 查询,但会从结果集中删除重复项。 INTERSECT 关键字仅用于在多个表之间使用 SELECT 查询检索公共行。 MINUS 关键字本质上是在两个 SELECT 查询之间进行减法。结果是第一个查询和第二个查询之间的差异。两个结果集中的任何公共行都会从最终输出中删除。35。 ### 如何从表中选择10条记录?
MySQL:使用限制子句,示例select * from Employee limit 10;
Oracle:使用 ROWNUM 子句,示例SELECT * FROM Employee WHERE ROWNUM < 10;
SQL Server:使用 TOP 子句,示例SELECT TOP 3 * FROM Employee;
39. ### 在删除表中的元素会导致另一个表中的元素被删除的情况下,如何维护数据库的完整性?
这可以通过调用 SQL 触发器来实现,该触发器侦听表 A 中删除的任何元素,并从表 B.40 中删除相应的链接元素。 ### 将数据从表A复制到表B的过程是怎样的?
INSERT INTO TableB (columnOne, columnTwo, columnThree, ...)
SELECT columnOne, columnTwo, columnThree, ...
FROM TableA
WHERE added_condtion;
-
两者之间的明显区别在于,与 IN 关键字相比,EXISTS 关键字的执行速度相对较快。这是因为 IN 关键字必须搜索所有现有记录,而 EXISTS 关键字在找到匹配记录时会自动停止。此外,IN 语句在 ResultSet 内操作,而 EXISTS 关键字在虚拟表上操作。在这种情况下,IN 语句也不会对与虚拟表关联的查询进行操作,而 EXISTS 关键字则用于链接查询。43。 ### 首字母缩略词 ACID 在数据库管理中代表什么?
ACID 缩写词代表原子性、一致性、隔离性和持久性。该属性主要负责数据库系统的进程完整性。这意味着用户向数据库发出的任何数据事务都必须完整、准确且具有耐受性。44. ### SQL 中的触发器是什么?
数据库触发器是一个自动执行的程序,以响应表或视图上的某些事件,例如记录的插入/更新/删除。主要是,数据库触发器帮助我们维护数据库的完整性。45。 ### SQL 中的自动增量功能是什么?
自动增量允许用户创建一个唯一的编号,每当新记录插入表中时就会生成该编号。 AUTO INCREMENT是Oracle的关键字,MySQL中的AUTO_INCRMENT和SQL SERVER中可以使用IDENTITY关键字来实现自动递增。大多数情况下,该关键字用于创建表的主键。46。 ### 什么是排序规则?
排序规则基本上是一组关于如何比较和排序字符的规则,扩展到字符串。 MSSQL 和 MySQL 中的排序规则的工作方式几乎相同,除了某些排序规则选项(例如 UTF-8)之外。除了正常的字符比较之外,排序规则还可以从 ASCII 表示的角度对字符串进行排序和比较。47。 ### 什么是递归存储过程?
一个存储过程,它会自行调用直到达到某个边界条件。这种递归函数或过程可帮助程序员多次使用同一组代码。48。 ### SQL 中哪些查询运算符用于模式匹配?
答案是 LIKE 运算符。 LIKE运算符用于模式匹配,可以用作-。
- % – 匹配零个或多个字符。
- _(下划线) – 精确匹配一个字符。
-
休眠是Java中的对象关系映射工具。 Hibernate 让我们编写面向对象的代码,并在内部将它们转换为本机 SQL 查询以针对关系数据库执行。 Hibernate 使用自己的语言,如 SQL,称为 Hibernate 查询语言(HQL)。不同之处在于 HQL 声称能够查询 Hibernate 的实体对象。 Hibernate 中还有一种面向对象的查询语言,称为 Criteria Query。事实证明,它对于主要在前端应用程序中使用对象的开发人员来说非常有益和有帮助,并且 Criteria Query 甚至可以添加类似 SQL 的功能(例如安全性和限制访问)来满足这些对象的需求。52。 ### 我们如何解决 SQL 错误:ORA-00904:无效标识符?
此错误通常是由于在 Oracle 数据库中调用列名时出现语法错误而出现,请注意错误代码中的 ORA 标识符。确保您输入了正确的列名称。另外,请特别注意别名,因为它们是错误中作为无效标识符引用的别名。53。 ### 什么是 SQL 探查器?
SQL Profiler 是一个图形用户界面,允许数据库开发人员监视和跟踪他们的数据库引擎活动。它具有对每个发生的事件进行活动记录的功能,并提供故障和差异分析。它基本上是 SQL 中的一项诊断功能,可以调试性能问题,并提供一种更通用的方法来查看跟踪文件中的哪个部分导致 SQL 事务阻塞。54。 ### 我们如何将 SQL 数据库链接到现有的 Android 应用程序?
它将需要 JDBC(Java 数据库连接)驱动程序来链接这两者。此外,您还必须将相应的依赖项以及权限和授权添加到 build.gradle 文件中。
参考:维基百科