📜  SQL Server面试问题

📅  最后修改于: 2020-12-02 10:07:50             🧑  作者: Mango

SQL Server面试问题

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

1)什么是SQL Server?

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

2)什么是规范化?

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

归一化类型

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

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

但是,仅前三种类型经常使用,其中“ NF”代表常规形式。 RD模型“ EF Codd”的创建者提出了使用第一种“规范形式”进行“规范化”的过程,并一直持续到第三种规范形式。

3)什么是反归一化?

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

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

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

5)什么是归类敏感性?说明不同的类型。

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

不同类型的排序规则敏感性:

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

情况下灵敏度:灵敏度的情况下定义了与一个唯一的值的每一个字符,如字母字符A和被单独对待的,因为它们具有不同的ASCII值的计算机语言

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

假名敏感性:假名敏感性定义了两个日语单词之间的差异:平假名和片假名

宽度灵敏度:区分单字节字符(半角宽度)和同一字符的双字节字符字符

6)什么是备用服务器?

备用服务器是当主服务器脱机时应用程序需要服务器的连续可用性的服务器类型。始终存在将主服务器转移到辅助服务器或备用服务器的机制的要求。

备用服务器有三种类型:

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

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

冷备用:冷备用是一种冗余方法,其中仅在主服务器发生故障时才调用辅助服务器。如果数据不经常更改或用于非关键应用程序,则使用冷备用系统。在冷备用状态下,将主服务器物理替换为备用服务器。

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

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

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

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

HAVING子句: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)的日常任务中起着至关重要的作用。它是Microsoft SQL Server的重要组成部分之一。服务器代理的目的是使用调度程序引擎轻松实现任务,该引擎使我们的作业能够在预定的日期和时间运行。 SQL Server代理使用SQL Server存储计划的管理任务信息。

15)什么是SQL Server中的COALESCE?

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

句法:

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

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

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

17)SQL Server中的身份验证模式是什么?如何更改?

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

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

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

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

18)什么是SQL Server Profiler?

Microsoft SQL Server Profiler是一个图形用户界面,允许系统管理员监视数据库引擎的事件。 SQL Server Profiler跟踪监视每个事件到一个文件。 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'oldname','newname';

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

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

24)abstract和interface有什么区别?

抽象类:

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

接口:

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

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方法安全,因为不能对其进行添加书签

获取方法存储在浏览器历史记录中,但发布方法未存储在浏览器历史记录中

30)什么是日志传送?

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

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

日志传送过程的步骤:

  • 首先在主SQL服务器实例上备份事务日志文件
  • 在辅助SQL Server实例上复制日志文件
  • 将日志备份文件还原到辅助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提示-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 (expression)

例如:

地板(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 Server表中所做的更改。

45)SQL Server中有几种类型的数据库关系?

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

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