SQL面试问题和答案

94

这篇文章将带领你了解一些SQL面试问题和答案,以帮助你换工作,或者如果你想提高你的面试技巧。我还试图为每个问题附上支持性文章,以帮助你更深入地了解指定主题。我试图以一种非常精确的方式回答每个问题,这也是现在大多数面试官想要听的。如果你想了解更多关于所问主题的信息,你可以访问该问题的附件链接。

我没有涵盖几乎所有面试中的通用问题,因为这些问题的答案是非常具体的,因人而异。如果你正在寻找工作机会,你必须根据你最好的知识来准备这些SQL面试问题。

  • 告诉我一些关于你自己和你的经验?
  • 你交付的最有挑战性的项目是什么?
  • 告诉我更多关于挑战和你是如何解决它们的?
  • 你为什么想改变?
  • 说出你被客户和领导认可的一两个项目或活动?

上面给出的问题只是大多数面试中的通用问题的一个例子。你必须根据你的经验来准备。在回答每个问题时,有一条简单的规则总是有效的,那就是要诚实。如果你不知道任何问题的答案,礼貌地告诉他们。

让我们来看看一些技术性的SQL面试问题和它们在下面章节的答案。

什么是函数以及它们在SQL Server中的好处?

函数是数据库对象,可以用来减少重复性语句的代码复杂性。在SQL Server中,函数的主要好处是它的可重复使用性。如果我们在一个脚本中使用一组重复的语句,那么我们可以创建一个函数,用该函数替换这些语句。它将在接受一些输入参数后返回结果。这样,函数在减少脚本长度和避免重复编写同一组语句方面非常有用。函数的其他好处是我们可以将它与SELECT语句以及WHERE或HAVING子句一起使用。它们还可以与CASE语句等表达式一起使用。

我们可以使用SQL Server函数来评估任何SQL Server用户在特定安全区的权限吗?

是的,我们可以通过使用一个与安全有关的系统定义的函数来获得这个权限。 HAS_Permis_BY_Name 其中你需要传递一些输入参数,如securable, securable class, 和你要评估的那个用户的权限名称。

  • 安全性是用户需要访问的特定资源
  • 安全性_类是定义安全的类的名称,如数据库、对象、登录等。
  • 权限是分配给securable的有效权限的名称。

函数和存储过程之间有什么区别?

两者都是SQL Server为满足不同需求而提供的两种不同的数据库对象。下面是SQL Server中函数和存储过程的主要区别。

  • 存储过程可以有输入和输出参数,而函数只能接受输入参数来返回其结果。
  • 存储过程可以使用TRY和CATCH语句来处理异常,而函数不能使用这些语句。
  • 存储过程可用于大多数T-SQL语句,如INSERT、UPDATE和DELETE,而函数只能用于SELECT语句。
  • 存储过程可以调用函数,而函数不能调用存储过程
  • 我们可以独立执行存储过程或使用EXECUTE语句,而函数不能独立执行,它们必须是T-SQL语句的一部分。

在SQL Server中使用存储过程的好处是什么?

这里列出了在SQL Server中使用存储过程的好处。

  • 存储过程非常容易使用和维护
  • 存储过程将多个SQL语句分组并作为一个批次执行,以减少网络流量。
  • 存储过程是快速的,因为它们在你第一次运行时就会创建执行计划,并且在以后的执行中会使用相同的执行计划。
  • 可重用性是存储过程的另一个好处。可以为任何重复的数据库操作创建存储过程,该存储过程可以在随后的执行过程中重复使用

如何从SQL Server的一个列中获取唯一的值?

我们可以使用语句从任何列中获取唯一的值。 选择独特语句从任何列中获取唯一的值。下面是一个简单的例子,它将返回列city中的所有唯一值。

--Return unique values from column city
SELECT DISTINCT city from employee

我们可以在一个表中创建多少个主键和外键?

在SQL Server中,我们只能在一个表中创建1个主键和最多253个外键。

在SQL Server中,有哪些选项可以用来跟踪数据变化?

SQL Server提供了两个功能 "变化数据捕获"和 "变化跟踪"来跟踪数据库的数据变化。应用程序开发人员不需要创建一个自定义的解决方案来跟踪他们数据库的变化。通过采用这些解决方案,他们可以节省大量的精力和时间,并专注于其他对你的开发更关键的领域。这两个功能可以提供端到端的解决方案。甚至还有一个内置的清理机制,在后台自动执行。

变更数据捕获和变更跟踪之间的区别是什么?

变更数据捕获(CDC)同时捕获变更前后的数据,而变更跟踪只保留变更的数据。它不保留任何与新数据一起被改变的旧数据的信息。变化数据捕获使用异步机制来跟踪变化,这意味着变化可用于后DML操作,而变化跟踪使用同步机制来捕获变化,正因为如此,所有的变化信息都可立即使用。

描述一下SQL Server中的全文本搜索?

全文搜索是SQL Server的一项功能,它允许我们对存储在表中的基于字符的数据运行全文查询。我们需要遵循3个基本步骤来设置SQL Server中的全文本搜索。

  1. 安装全文搜索组件,因为它默认没有安装。如果之前没有安装,你需要运行SQL Server设置来安装这个组件。
  2. 创建一个全文本目录
  3. 在表中创建一个全文本索引

一旦你依次完成上述步骤,你就可以对存储在你已经创建了全文本索引的列中的文本进行全文本查询。

全文搜索与LIKE谓词有何不同?

全文搜索和LIKE谓词的设计是为了满足不同的要求。全文搜索在运行复杂的搜索操作时,借助其内置的谓词CONTAINSFREETEXT以及带有SELECT语句的行值函数CONTAINSTABLEFREETEXTTABLE,效率更高,功能更强,而LIKE谓词对基于字符的搜索模式使用衬里扫描过程,找到所有匹配的术语。当你必须在非常大的非结构化文本数据中搜索一个字符串或字符时,LIKE谓词的工作效率很低,而全文搜索在这种数据集上会很快返回其输出。

你需要安装一个全文本搜索组件来使用这个功能,而使用LIKE谓词则没有这个要求。

全文索引和普通SQL Server索引的区别是什么?

全文索引是用于全文查询的。我们只能为每个表创建一个全文索引,而你可以为每个表创建多个普通索引。全文索引必须属于它们的全文目录,而对普通索引则没有这种要求。

解释一下SQL Server中的分区,它有什么好处?

顾名思义,分区将一个表或索引分为多个子部分,通过访问属于各自分区的少量数据来提高数据的可管理性和查询性能。 使用分区有很多好处,下面给出了其中一些。

  • 它通过只访问一小部分数据来提高查询性能。你不需要查看整个数据集来获得你的结果
  • 更快,更多的控制数据维护活动。如果需要,我们可以在一个或多个分区上运行索引操作,而不是整个表的数据集。
  • 更好的数据管理能力。我们可以将表或索引的分区放在一个或多个文件组上,然后甚至可以将一个特定的文件组分配给一个特定的存储层。

什么是T-SQL语言中的CASE表达式?

当你必须评估各种条件并希望从众多可能的表达式中返回一个时,CASE表达式就会被使用。它按顺序评估条件,并在第一个条件得到满足时停止。我们可以用两种格式来使用CASE表达式。

  • 简单的CASE表达式
  • 搜索的CASE表达式

在SQL Server中CHAR和VARCHAR数据类型的区别是什么?

CHAR数据类型用于存储固定长度的数据,而VARCHAR数据类型则用于存储可变长度的数据串。与VARCHAR数据类型相比,CHAR数据类型有更好的性能。CHAR数据类型的每个字符使用1个字节,而VARCHAR的每个章程使用1个字节,其他信息如长度信息等使用额外的字节。

总结

我在这篇文章中列出了一些SQL面试问题和答案。如果你正在寻找新的机会,你可以继续阅读它们来破解SQL Server的工作。请在评论区告诉我们你的反馈。