您应该在2019年准备的工作面试中的前65个SQL问题。 第一部分


本文的翻译是为“ MS SQL Server开发人员”课程的学生准备的




关系数据库是迄今为止最常用的数据库之一,因此大多数职位都需要具备SQL技能 。 在本文中,我将通过访谈中的SQL问题向您介绍有关SQL(结构化查询语言-结构化查询语言)的最常见问题。 本文是探索与SQL,Oracle,MS SQL Server和MySQL数据库有关的所有概念的理想指南。


我们的SQL问题文章是一种通用资源,可以帮助您加快面试准备。 它由面试官在面试中可以提出的65个最常见问题组成。 它通常从基本的SQL问题开始,然后根据讨论和您的答案转到更复杂的问题。 这些SQL面试问题将帮助您在各种理解水平上最大化您的收益。
让我们开始吧!


面试SQL问题


问题1. DELETE和TRUNCATE有什么区别?


删除截断
用于删除表中的行。用于删除表中的所有行。
删除后即可恢复数据您无法还原数据(翻译注释:操作以不同的方式记录,但是SQL Server可以回滚)事务)
DML团队DDL命令
比TRUNCATE语句慢快一点

否。问题2. SQL的子集是什么?


  • DDL(数据定义语言) -允许您对数据库执行各种操作,例如CREATE(创建),ALTER(更改)和DROP(删除对象)。
  • DML(数据操作语言) -允许您访问和操作数据,例如,从数据库中插入,更新,删除和检索数据。
  • DCL(数据控制语言) -允许您控制对数据库的访问。 一个示例是GRANT(授予权限),REVOKE(撤消权限)。

问题3. DBMS是什么意思? 有哪些类型的DBMS?


数据库是结构化的数据集合。 数据库管理系统(DBMS)-与用户,应用程序和数据库本身进行交互以收集和分析数据的软件。 DBMS允许用户与数据库进行交互。 可以修改,检索和删除数据库中存储的数据。 它们可以是任何类型,例如字符串,数字,图像等。


DBMS有两种类型:


  • 关系数据库管理系统:数据存储在关系(表)中。 一个例子是MySQL。
  • 非关系数据库管理系统:没有关系,元组和属性的概念。 一个例子是Mongo。

问题4. SQL中的表和字段是什么意思?


表格是行和列形式的有组织的数据集。 字段是表中的一列。 例如:
表: Student_Information
字段: Stu_Id,Stu_Name,Stu_Marks


问题5. SQL中的联接是什么?


JOIN运算符用于根据两个或多个表之间连接的列联接行。 它用于连接两个表或从中获取数据。 SQL中有4种连接类型,即:


  • 内部加入
  • 正确加入
  • 左加入
  • 完全加入

问题6. SQL中CHAR和VARCHAR数据类型之间有什么区别?


Char和Varchar均用作字符数据类型,但是varchar用于可变长度的字符串,而Char用于固定长度的字符串。 例如,char(10)只能存储10个字符,不能存储任何其他长度的字符串,而varchar(10)可以存储任何长度的字符串,最多10个字符。 例如6、8或2。


问题7.什么是主键?



  • 主键是一列或一组列,它们唯一地标识表中的每一行。
  • 唯一标识表中的一行
  • 不允许为空值

_示例:在Student Stu表中, 主键为。


问题8.什么是约束?


约束用于指示对表的数据类型的限制。 可以在创建或修改表时指定它们。 限制示例:


  • 非空
  • 检查
  • 默认
  • 独特的
  • 主键
  • 外键

问题9. SQL和MySQL有什么区别?


SQL是基于英语的标准结构化查询语言,而MySQL是数据库管理系统。 SQL是用于访问和管理数据的关系数据库语言,MySQL是关系DBMS(数据库管理系统)以及SQL Server,Informix等。


问题10.什么是唯一密钥?


  • 唯一标识表中的一行。
  • 一个表中允许有许多唯一键。
  • 允许使用NULL值( 翻译说明:取决于DBMS;在SQL Server中,只能在具有UNIQUE KEY的字段中添加NULL一次 )。

问题11.什么是外键?


  • 外键通过提供两个表中数据之间的链接来维护引用完整性。
  • 子表中的外键是指父表中的主键。
  • 外键约束可防止破坏子表与父表之间关系的操作。

问题12.数据完整性是什么意思?


数据完整性决定了存储在数据库中的数据的准确性和一致性。 它还定义了完整性约束,以在将数据输入到应用程序或数据库中时对数据执行业务规则。


问题13. SQL中的聚集索引和非聚集索引有什么区别?


  1. SQL中群集索引和非群集索引之间的区别:
    聚集索引用于轻松快速地从数据库中检索数据,而从非聚集索引读取则相对较慢。
  2. 聚集索引会更改记录在数据库中的存储方式-它按设置为聚集索引的列对行进行排序,而在非聚集索引中,它不会更改存储方法,而是在表内部创建一个单独的对象,该对象在搜索时指向原始表行。
  3. 一个表只能有一个聚集索引,而它可以有许多非聚集索引。

问题14.编写一个SQL查询以显示当前日期。


SQL具有内置的GetDate()函数,可帮助返回当前时间戳/日期。


问题15.列出连接类型


有多种类型的联接用于提取表之间的数据。 基本上,它们分为四种类型,即:



内部联接 :在MySQL中,最常见的类型。 它用于从满足联接条件的几个表中返回所有行。


左联接 :在MySQL中,它用于返回左(第一个)表中的所有行,并且仅返回右(第二个)表中满足联接条件的所有行。


右连接 :在MySQL中,它用于返回右(第二个)表中的所有行,并且仅返回满足连接条件的左(第一个)表中的所有匹配行。


完全连接 :返回任何表中都匹配的所有记录。 因此,它返回左表中的所有行和右表中的所有行。


问题16.您所说的非规范化是什么意思?


非规范化是一种用于从较高范式转换为较低范式的技术。 通过在表中引入冗余,它可以帮助数据库开发人员提高整个基础架构的性能。 考虑到频繁的数据库查询,它将不同表中的数据组合到一个表中,因此它将冗余数据添加到表中。


问题17.什么是实体和关系?


实体:现实世界中的一个人,一个地方或物体,有关其的数据可以存储在数据库中。 表存储代表一种实体类型的数据。 例如,银行数据库具有用于存储客户信息的客户表。 客户表将此信息存储为每个客户的一组属性(表中的列)。


关系:实体之间以某种方式相互关联的关系或关系。 例如,客户名称与客户帐号和联系信息相关联,它们可能在同一表中。 各个表之间也可能存在关系(例如,客户到帐户)。


问题18.什么是索引?


索引与一种性能调整方法有关,该方法可以更快地从表中检索记录。 索引为索引字段创建了单独的结构,因此可以更快地检索数据。


问题19.描述不同类型的索引。


索引分为三种:


  1. 唯一索引:如果列被唯一索引,则此索引可防止字段重复值。 如果定义了主键,则可以自动应用唯一索引。
  2. 聚集索引:此索引更改表的物理顺序并基于键值进行搜索。 每个表只能有一个聚集索引。
  3. 非聚集索引:不更改表的物理顺序,并保持数据的逻辑顺序。 每个表可以具有许多非聚集索引。

问题20.什么是规范化?优点是什么?


规范化是组织数据的过程,其目的是避免重复和冗余。 一些好处:


  • 最佳数据库组织
  • 带有小行的更多表
  • 有效的数据访问
  • 更大的查询灵活性
  • 快速信息搜索
  • 更容易实现数据安全
  • 易于修改
  • 减少冗余和重复数据
  • 更紧凑的数据库
  • 确保更改后的数据一致性

问题21. DROP和TRUNCATE有什么区别?


DROP命令删除表本身,并且您无法执行Rollback命令,而TRUNCATE命令删除表中的所有行( 注意翻译:在SQL Server中,Rollback通常可以工作并回滚DROP )。


问题22.解释标准化的不同类型。


有许多连续的标准化级别。 这些是所谓的范式。 每个后续的范式包括前一个。 通常,前三个范式就足够了。


  • 第一范式(1NF) -行中没有重复的组
  • 第二范式(2NF) -每个非键(支持)列的值取决于整个主键
  • 第三范式(3NF) -每个非键值仅取决于主键,而不取决于列的另一个非键值

问题23.数据库中的ACID属性是什么?


ACID表示原子性,一致性,隔离性,耐久性。 它用于提供数据库系统中数据事务的可靠处理。


原子性。 确保事务完全完成或失败,其中事务代表单个逻辑数据操作。 这意味着,如果任何事务的一部分失败,则整个事务都会失败,并且数据库的状态将保持不变。


连贯性。 确保数据必须符合所有验证规则。 简而言之,您可以说您的交易将永远不会使数据库处于无效状态。


隔离度。 隔离的主要目的是控制并行数据更改的机制。


长寿。 持久性意味着,如果确认了事务(COMMIT),则无论发生什么事情(例如,断电,故障或任何类型的错误),都将保留事务中发生的更改。


问题24. SQL中的“触发”是什么意思?


SQL中的触发器是一种特殊类型的存储过程,旨在在数据更改时或更改后自动执行。 这使您可以在特定表上执行插入,更新或任何其他查询时执行代码包。


问题25. SQL中提供哪些语句?


SQL中提供了三种类型的语句,分别是:


  1. 算术运算符
  2. 逻辑运算符
  3. 比较运算符

问题26. NULL值是否匹配零或空格?


NULL不为零,也不为空格。 NULL值表示不可用,未知,已分配或不适用的值,而零是数字,空格是字符。


问题27.交叉联接和自然联接有什么区别?


交叉联接创建两个表的交叉或笛卡尔积,而自然联接基于两个表中具有相同名称和数据类型的所有列。


问题28.什么是SQL中的子查询?


子查询是另一个查询中的查询,该查询定义了从数据库检索数据或信息的查询。 在子查询中,外部查询称为主查询,而内部查询称为子查询。 始终先执行子查询,然后将子查询的结果传递给主查询。 它可以嵌套在SELECT,UPDATE或任何其他查询中。 子查询也可以使用任何比较运算符,例如>,<或=。


问题29.子查询的类型是什么?


子查询有两种类型,即:相关查询和不相关查询。


  • 关联子查询:这是从带有外部查询链接的表中选择数据的查询。 它不被视为独立查询,因为它引用了另一个表或表中的列。
  • 不相关的子查询:此查询是一个独立的查询,其中子查询输出被替换为主查询。

问题30.列出获取表中记录数的方法吗?


要计算表中的记录数,可以使用以下命令:
SELECT * FROM table1
SELECT COUNT(*) FROM table1
SELECT rows FROM sysindexes WHERE id = OBJECT_ID(table1) AND indid < 2




我们将在下一部分发布另外35个问题的答案……关注新闻!

Source: https://habr.com/ru/post/zh-CN461067/


All Articles