SQL Server 面试问题


SQL Server 面试问题

下面列出了最常见的SQL Server面试问题和答案。

1) 什么是 SQL Server?

SQL Server 是 Microsoft 提供的 RDBMS 系统,其主要功能是根据用户请求检索和存储数据。有时它被错误地称为 SQL,但两者是不同的,因为 SQL 是一种语言,而 SQL Server 是支持 SQL 的 Microsoft 产品。


2)什么是规范化?

在 RDBMS 中,组织数据以最小化冗余和确保逻辑数据完整性的过程称为规范化。在规范化中,将数据库分成两个或多个表,并在表之间定义关系。规范化技术提高了数据库的性能。

标准化的类型

有使用的归一化类型,如下所示。

  • 1NF
  • 2NF
  • 3NF
  • BCNF
  • 4NF
  • 5NF

但是,前三种类型只是经常使用,其中“NF”代表范式。RD模型“EF Codd”的鼻祖提出了第一个“范式”的“归一化”过程,并一直延续到第三范式。


3)什么是去规范化?

它是一个试图通过添加冗余数据来优化数据库性能的过程。表中有意引入冗余以提高性能,称为反规范化。去规范化过程增强了读取性能,而写入性能会出现一些下降。可以通过将一组数据做成冗余形式来实现。非规范化和非规范化数据库彼此完全不同。在对任何数据库进行反规范化的过程之前,首先应该对其进行规范化。


4)函数和存储过程有什么区别?

  • 函数必须返回一个值,而存储过程可以返回零或 n 值。
  • 函数只能有输入参数,而过程可以有输入/输出参数。
  • 函数采用一个强制输入参数,而存储过程可能采用 0 到 n 个输入参数。
  • Try-catch 块可以处理异常。在存储过程中,虽然不能在函数中使用 try-catch。

5) 什么是校对敏感度?解释不同的类型。

排序敏感度用于定义对字符数据的字符串进行排序和比较的规则。字符数据排序的基本规则是正确的字符序列、区分大小写、字符宽度和重音符号等。

不同类型的校对敏感度:

  • Case sensitivity
  • Accent sensitivity
  • Kana sensitivity
  • Width sensitivity

Case Sensitivity:区分大小写用唯一值定义每个字符,因为字母字符 A 和 a 被单独处理,因为它们对于计算机语言具有不同的 ASCII 值

Accent sensitivity:重音敏感度与重音是否关闭有关,因为a和á都应该区别对待

Kana sensitivity::假名敏感度定义了两个日语单词之间的区别:平假名和片假名

Width sensitivity:区分单字节字符(半角)和同一个字符的双字节字符的表示


6)什么是备用服务器?

备用服务器是当主服务器脱机时联机的服务器类型,应用程序需要服务器的持续可用性。始终需要一种可以将主服务器转换为辅助或备用服务器的机制。

备用服务器分为三种类型:

热备用:热备用方法是一种冗余方法,其中主备用系统和备用系统同时运行,因此数据也实时存在于备用服务器中,这样两个系统都包含相同的信息。

热备份:热备份是一种冗余方法,其中从系统运行在主系统的后台。数据定期镜像到辅助服务器中,因此在这种方法中,有时两个服务器不包含相同的数据。

冷备用:冷备用是一种冗余方法,其中仅在主服务器出现故障时才调用辅助服务器。冷备用系统用于数据不经常更改或用于关键应用程序的情况。主服务器与备用服务器的物理替换发生在冷备用中。


7)聚集索引和非聚集索引有什么区别?

聚集索引:聚集索引是一种特殊类型的索引,它重新排序表中记录的物理存储方式。它给出了物理存储在数据库中的数据序列。因此一张表只能有一个聚集索引。聚集索引的叶节点包含数据页。聚集索引的索引 id 为 0。因此主键约束会自动创建聚集索引。

非聚集索引:非聚集索引是一种特殊类型的索引,其中索引的逻辑顺序与磁盘上行的物理存储顺序不匹配。在非聚集索引中数据和索引存储在不同的地方。非聚集索引的叶节点不包含数据页。相反,叶节点包含索引行。非聚集索引的索引 id 大于 0。


8) SQL Server 中的 HAVING CLAUSE 和 WHERE CLAUSE 有什么区别?

HAVING Clause: HAVING CLAUSE 仅与 SELECT 语句一起使用。它通常用于查询中的 GROUP BY 子句。

如果未使用 GROUP BY,则 HAVING 的工作方式类似于 WHERE 子句。HAVING 子句可以与聚合函数一起使用。

句法:

SELECT expr1, expr2, expr3..,  
FROM tables  
WHERE condition   
GROUP BY expr1, expr2, expr3..,  
HAVING condition;

WHERE 子句:WHERE 子句在查询中成为 GROUP BY 函数的一部分之前应用于每一行。'WHERE' 子句不能与聚合函数一起使用。

句法:

WHERE condition;

9) SQL Server 中的递归存储过程是什么?

递归存储过程被定义为一种解决问题的方法,其中解决方案重复出现。SQL Server 支持自己调用的递归存储过程。它最多可以嵌套 32 层。它可以直接或间接地被自己调用

存储过程中有两种实现递归的方式:

  • 相互递归:通过使用相互递归的存储过程,可以实现间接递归
  • 链递归:如果我们扩展互递归过程,那么我们就可以实现链递归。

10) 在 SQL Server 中使用存储过程有什么好处?

存储过程的优点列表:

  • 存储过程有助于减少网络流量和延迟。它提高了应用程序的性能。
  • 存储过程有助于代码的可重用性。
  • 存储过程为数据提供了更好的安全性。
  • 您可以使用存储过程封装逻辑并更改存储过程代码而不影响客户端。
  • 可以重用缓存在 SQL Server 内存中的存储过程执行计划。这减少了服务器开销。
  • 它提供了应用程序的模块化。

11) 设计表格时定义一对一关系。

一对一关系:它可以实现为单个表,很少实现为具有主键和外键关系的两个表。

如果一个表中的实体仅与另一表中的一个实体有链接,则存在一对一关系。让我们举一个员工和他们的员工 ID 的例子,这样另一张桌子上的特定员工就会有一个唯一的员工 ID。


12) 如何隐藏 SQL Server 实例?

您必须在 SQL Server 配置管理器中进行更改以隐藏 SQL Server 实例。

按照以下说明启动 SQL Server 配置管理器并执行以下操作:

  • 选择 SQL Server 的实例。
  • 右键单击并选择属性。
  • 选择属性后,您只需将隐藏实例设置为“是”,然后单击“确定”或“应用”。
  • 更改后需要重启SQL Server实例,不要暴露实例名称。

13) 什么是 SQL Server 中的 CHECK 约束?

CHECK 约束应用于表中的列以限制可以放置在列中的值。它强制执行完整性。在单列上使用检查约束后,我们只能为该特定列提供一些特定值。检查约束为表中的每一列应用一个条件。

例子:

CREATE TABLE Employee (  
    EMP_ID int NOT NULL,  
    LastName varchar(255) NOT NULL,  
    FirstName varchar(255),  
    Age int,  
    City varchar(255),  
    CONSTRAINT CHK_Employee CHECK (Age>20AND City= 'Greenville')  
);

14) SQL Server 代理是什么意思?

SQL Server 代理在 SQL Server 管理员 (DBA) 的日常任务中起着至关重要的作用。它是微软 SQL 服务器的重要组成部分之一。服务器代理的目的是使用调度引擎轻松实现任务,允许我们的作业在预定的日期和时间运行。SQL Server 代理使用 SQL Server 存储计划的管理任务信息。


15) SQL Server 中的 COALESCE 是什么?

COALESCE 用于返回参数中的第一个非空表达式。此函数用于从参数中的多列返回非空值。COALESCE 接受所有值,但它只返回表达式中存在的非空值。

句法:

COALESCE(expr1, expr2, expr3,......,expr n)

16) SQL Server 运行在哪个 TCP/IP 端口?可以改变吗?

SQL Server 在端口 1433 上运行。是的,它可以通过网络实用程序 TCP/IP 属性进行更改。


17) SQL Server 中的身份验证模式有哪些?如何更改?

身份验证模式用于在SQL Server 中对用户进行身份验证,可以在设置数据库引擎时选择。

SQL Server 支持两种身份验证模式:窗口身份验证模式和混合模式。

Window 身份验证模式:此身份验证模式用于通过 Microsoft NT 4.0 或 window 2000 用户帐户进行连接。在 Windows 身份验证服务器中,以计算机的用户名和密码进行身份验证。在此模式下禁用 SQL 服务器身份验证模式。

混合模式:用于连接使用窗口身份验证或 SQL Server 身份验证的 SQL Server 实例。在 SQL Server 身份验证模式下,特定数据库需要唯一的用户名和密码,因为它不依赖于 Windows 帐户。


18) 什么是 SQL Server Profiler?

Microsoft SQL Server Profiler 是一个图形用户界面,允许系统管理员监视数据库引擎的事件。SQL 服务器探查器跟踪将每个事件监视到一个文件。SQL探查器可用于数据的实时监控,也可用于未来的数据分析。

您可以使用 SQL Server Profiler 执行以下操作 -

您可以创建跟踪。

您可以在跟踪运行时查看跟踪结果。

您可以将跟踪结果存储在表格中。

您可以找出查询中的错误并对其进行诊断。

如果需要,您可以启动、停止、暂停和修改跟踪结果。


19) 什么是 SQL Server 代理?

SQL Server 代理是 Microsoft SQL Server 的一个组件。它是Microsoft SQL Server 的后台工具,因此作为窗口服务在后台持续运行。SQL Server 代理允许数据库管理员处理自动化任务和安排作业。它运行窗口服务,因此可以在系统启动时自动启动,也可以手动启动。


20) 什么是“预定作业”或“预定任务”?

计划任务可让您以定期或可预测的周期运行的自动化方式管理任务。您可以安排管理任务并确定任务的运行顺序。


21) 什么是 DBCC 命令,为什么要使用它?

DBCC 代表数据库一致性检查器。该命令用于检查数据库的一致性。DBCC 命令帮助查看和监控表、数据库的维护,以及验证对数据库所做的操作等。例如:

DBCC CHECKDB:它确保数据库中的表和索引正确链接。

DBCC CHECKALLOC:它检查数据库中的所有页面并确保所有页面都正确分配。

DBCC CHECKFILEGROUP:它检查所有表文件组是否有任何损坏。

如果用户执行上述命令,则通过数据库引擎创建一个数据库快照,并继续保持一致的事务状态。之后,它针对存储的数据库快照运行检查,并在命令完成后,删除快照。


22) 使用什么命令重命名数据库?

sp_renamedb '旧名', '新名';


23) SQL Server 可以与其他服务器如 Oracle 链接吗?

是的,它可以链接到任何服务器。它有来自 Microsoft 的 OLE-DB 提供程序,允许链接。


24)抽象和接口有什么区别?

抽象类:

  • 它提供了一组规则来实现下一个类。规则是通过抽象方法提供的。
  • Abstract 方法不包含任何定义。
  • 当一个类包含所有没有函数体的函数时,它被称为完全抽象类。
  • 另一个类只能继承一个抽象类。

界面:

  • 如果一个类包含所有抽象方法,则该类称为接口。
  • 接口支持,如多重继承。
  • 接口不包含任何实现
  • 我们只能使用 public 或 abstract 修饰符。

25) 应用程序对象和会话对象有什么区别?

会话对象用于维护每个用户的会话。如果用户进入应用程序,他会得到一个会话 ID,当他离开应用程序时,会话 ID 就会被删除。如果他再次进入应用程序,他会得到一个不同的会话ID,但对于应用程序对象,一旦生成了广告ID,它就会维护整个应用程序。


26) 在 NOT NULL 条件下,主键和唯一键之间有什么区别吗?

主键和唯一键之间没有区别,但是,唯一键将允许单个 NULL,但在主键中,不接受 NULL。


27) 值类型和引用类型有什么区别?

值类型和引用类型在声明语法和用法上可能相似,但它们的语义是不同的。值类型和引用类型因存储区域而异。

值类型存储在堆栈中,而引用类型存储在堆中。

值类型存储真实数据,而引用类型存储对数据的引用。

与引用类型相比,值类型的访问速度更快。

值类型可以包含空值,而引用类型不能包含空值。

值类型派生自 System. 值类型而引用类型是从系统对象派生的。表示值类型存储特定值,但引用类型存储对象的引用或地址

字符串、对象、数组是引用类型,因为它们存储在堆中并且本质上是动态的


28) .net 中的装箱和拆箱概念是什么?

装箱:将值类型(整数、字符等)隐式转换为引用类型(对象)称为装箱。在装箱过程中,值类型(通常存储在堆栈中)是在堆上而不是堆栈上分配的。装箱将一个值包装在对象内,该值可以存储在堆部分中。

例子

//Boxing the variable i:  
int i= 56;  
Object obj=i;

拆箱:将相同的引用类型(由装箱过程创建)显式转换回值类型称为拆箱。在拆箱过程中,一个装箱的值类型从堆中拆箱并分配到栈上。

例子

//UNBoxing the variable i:  
obj=56;  
i= (int) obj;

29) GET 和 POST 方法有什么区别?

GET 和 POST 方法是“表单提交”方法。两者都用于将数据从客户端发送到服务器端。这些是 GET 和 POST 方法之间的一些差异 -

在 GET 方法中缓存是可能的,而在 POST 方法中是不可能的。

GET 方法只允许 ASCII 字符数据类型,而 POST 方法没有限制,它也允许二进制数据。

在 GET 方法中,字符串的长度是有限制的,而在 POST 方法中,字符串的长度是没有限制的。

Get 方法不安全,因为它可以添加书签,但是 post 方法是安全的,因为它不能添加书签

Get 方法存储在浏览器历史记录中,但 post 方法不存储在浏览器历史记录中


30) 什么是日志传送?

日志传送是在主数据库服务器上自动备份数据库和事务日志文件,然后在备用服务器上恢复它们的过程。许多服务器都支持这种技术来维护备份服务器,例如 Microsoft SQL Server、4D 服务器、MySQL 和 PostgreSQL。

日志传送的主要目的是像复制一样提高数据库可用性。在每个辅助数据库上,特别应用日志备份。

日志传送过程的步骤:

  • 首先在主 SQL 服务器实例上备份事务日志文件
  • 复制辅助 SQL 服务器实例上的日志文件
  • 将日志备份文件还原到辅助 SQL Server 实例

31) SQL Server 中有哪些不同类型的复制?

SQL Server 中有三种类型的复制。

1) 快照复制:快照复制完全按照特定时刻出现的数据进行分发。快照复制是复制不经常更改的数据的最佳方法。快照复制是最简单的维护方式。

2)事务复制:事务复制是将数据从发布者分发到订阅者的过程。事务复制一般用于“服务器到服务器”环境。当您希望将增量更改传播到订阅者时,这是合适的。

3)合并复制:合并复制将来自不同来源的数据分组到一个集中的数据库中。它一般用在服务器到客户端的环境中。当多个订阅者可能在不同时间更新相同数据时,合并复制是合适的。


32) SQL Server 中使用的主要第三方工具是哪个?

SQL Server 中使用的第三方工具列表:

  • SQL CHECK - Idera:它用于监视服务器活动和内存级别。
  • SQL DOC 2 - RedGate:用于记录数据库。
  • SQL Backup 5 - RedGate:它用于自动化备份过程。
  • SQL Prompt - RedGate:它为 SQL SERVER 2005/2000 提供 IntelliSense。
  • Lite Speed 5.0 - Quest Soft:用于备份和恢复。

33) 使用第三方工具有什么好处?

使用第三方工具的优势列表:

  • 第三方工具提供更快的备份和恢复。
  • 它们提供灵活的备份和恢复选项。
  • 他们提供加密的安全备份。
  • 它们提供备份和恢复环境的企业视图。
  • 轻松确定最佳备份设置。
  • 事务日志和事务日志备份的可见性。
  • 备份历史和计划的时间线视图。
  • 恢复单个数据库对象。
  • 将完整的数据库还原封装到单个文件中以加快还原时间。
  • 当我们需要改进 SQL Server 原生提供的功能时。
  • 节省时间、获得更好的信息或通知。
  • 第三方工具可以将备份放在一个压缩文件中,以减少空间和时间。

34) SQL Server 中有哪些不同类型的排序规则敏感度?

SQL Server 中有四种类型的排序规则敏感性:

  • 区分大小写
  • 口音敏感度
  • 假名敏感度
  • 宽度灵敏度

在问题 5 中详细解释


35) SQL Server 中的修补程序和补丁是什么?

修补程序是应用于实时系统的小软件补丁。修补程序是单个累积包,其中包含一个或多个用于解决软件产品中的问题的文件。

例如- 软件错误

补丁是安装在机器上的程序,用于纠正系统中出现的问题,保证系统的安全。此修补程序是 Microsoft 提供的一种补丁程序。

在 Microsoft SQL Server 中,修补程序是旨在解决特定问题的小补丁,最常见的是新发现的安全漏洞。热修复响应主动针对任何错误


36) SQL Server 最常用的跟踪标志是什么?

SQL Server 中的跟踪标志设置了服务器的特定特征。它用作 SQL Server 的“IF”条件。与 SQL Server 一起使用的最常见跟踪标志是:

  • 死锁信息:1204、1205、1222
  • 网络数据库文件:1807
  • 连接日志记录:4013
  • 跳过启动存储过程:4022
  • 禁用锁定提示:8755
  • 强制统一范围分配而不是混合页分配 1118(SQL 2005 和 2008)。

37) 你将如何决定主动节点和被动节点?

Open Cluster Administrator 检查 SQL Server 组,您可以在其中看到当前所有者。所以当前所有者是主动节点,其他节点是被动节点。因为在同一时间只有一个节点可以是主动的,并且在两个节点中必须处于被动模式。


38) SQL Server 中 FLOOR 函数的用途是什么?

FLOOR 函数用于将非整数值向上舍入为前一个最小整数。Floor 表达式在向下舍入表达式后返回一个唯一值。

句法:

FLOOR (expression)

例如:

FLOOR (7.3)


39) SIGN 功能的用途是什么?

SIGN 函数用于定义指定的数字是否为正数、负数和零。这将返回 +1、-1 或 0。SIGN 函数返回带有符号的值。

句法:

SIGN (number)  

If the number>0, then it will return +1  
If the number=0, then it will return 0  
If the number<0, then it will return -1

40) 什么是 SQL Server 中的子查询?解释其性质。

在 SQL Server 中,主查询中的查询(如选择、更新、插入或删除)称为子查询。它也称为内部查询。

子查询可以添加到 WHERE 子句、FROM 子句或 SELECT 子句。

下面给出了子查询的一些属性:

  • 子查询必须用括号括起来
  • 子查询可以添加 WHERE、GROUP BY 和 HAVING CLAUSE,但它是可选的。
  • SELECT 子句和FROM 子句必须包含在子查询中。
  • 一个用户可以包含多个查询

41) 如何删除 SQL Server 中的表?

用户可以使用 SQL Server Management Studio 或 SQL Server 中的 Transact-SQL 从数据库中删除 TABLE

以下是使用 SQL Server 管理删除表的步骤

  • 在对象资源管理器中选择一个表(要删除)
  • 通过右键单击表格从快捷菜单中选择删除
  • 单击“是”以确认删除表

42) SQL server 有哪些加密机制?

我们可以使用加密来确保 SQL Server 中数据库中的数据安全。以下是 SQL Server 中使用的加密机制:

  • Transact-SQL 函数
  • 非对称密钥
  • 对称键
  • 证书
  • 透明数据加密

43) 在 SQL Server 中定义魔术表?

由 SQL Server 内部自动创建和管理的用于存储任何 DML(SELECT、DELETE、UPDATE 等)操作的插入、更新值的表,在 SQL Server 中称为魔术表。触发器最好使用它。


44) 什么是 SQL Server 中的 CDC?

CDC 被称为“变更数据捕获”。它捕获应用于 SQL Server 表的 INSERT、DELETE 和 UPDATE 的最近活动。它以兼容的格式记录在 SQL 服务器表中所做的更改。


45) SQL server 中有多少种数据库关系?

SQL Server 中存在三种类型的关系:

  • 一对一关系
  • 多对多关系
  • 一对一的关系


原文链接:https://codingdict.com/