20个常见的SQL面试问题和答案【2023】
结构化查询语言(SQL)是数据库管理员和数据分析师用于查询数据库的标准编程语言。它广泛应用于网站、应用程序和其他平台的编程语言中。
它用于访问和操作数据库中的数据,包括创建和修改表和列以及使用SQL commands查询数据。
如果您正在准备SQL面试并寻找问题和答案,本帖无疑会给您一些启示。在数据工程师、数据分析师、database administrator等的求职面试中,应该预期以下问题。
基本SQL命令有哪些?
一些最重要的SQL命令包括:
- SELECT – 从数据库中提取数据。
- CREATE TABLE – 创建新表。
- DELETE – 从数据库中删除数据。
- INSERT INTO – 向数据库插入新数据。
- ALTER DATABASE – 修改数据库。
- CREATE DATABASE – 创建新数据库。
- UPDATE – 更新数据库中的数据。
四个重要的SQL语句是什么?
主要的SQL语句分为以下几类:
- 数据定义语言(DDL)语句
- 数据操作语言(DML)语句
- 数据控制语言(DCL)语句
- 事务控制语言(TCL)语句
主键在SQL中的意义是什么?
主键是一列(或一组列),允许在数据库中唯一标识每一行。SQL数据库非常重视主键。它们为数据库表中的每一行提供了唯一的ID。主键可以由一个或多个字段组成,每个表只能有一个主键。
SQL数据类型有哪些?
数据类型是描述对象可以存储的数据种类的属性,例如二进制字符串、数值数据、字符数据、财务数据、日期和时间数据等。
在SQL中,数据类型分为以下几组:
- 精确数值
- 近似数值
- 日期和时间
- 字符字符串
- Unicode字符字符串
- 二进制字符串
用户名称和密码在SQL Server中存储在哪里?
用户名称和密码分别存储在SQL表的sys.server principals和sys.sql logins中。密码不以普通文本形式存储。
什么是SQL注入?
SQL注入攻击是当今最常见的网络攻击类型之一。它们允许恶意攻击者通过操纵应用程序的数据库来访问数据。这可能导致各种负面后果,从财务损失到敏感数据的丢失。防止SQL注入攻击的最佳方法是预防它们的发生。
SQL中的触发器及其类型是什么?
触发器是一种特殊类型的存储过程,当数据库服务器中发生事件时自动运行。触发器用于使用DDL和DML语句在数据修改之前或之后评估数据。
有三种类型的触发器 – LOGON、DDL和DML。
- LOGON触发器:当用户启动登录事件时触发。
- DDL触发器:每当发出DDL命令(如CREATE、ALTER或DROP)时触发。
- DML触发器:每当DML命令修改数据时触发。类似于INSERT、UPDATE和DELETE
您如何区分单行函数和多行函数?
单行函数一次只能影响表中的一行。它们执行一行,然后只返回一个结果。众所周知,长度和大小写转换是单行函数。
一个表的行可以同时受到多个行函数的影响。它们也被称为组函数,执行多行后返回单个输出。
什么是数据库规范化,在SQL中有哪四种主要类型?
数据库规范化是一种通过组织数据以实现更快访问和减少数据冗余的过程。在规范化期间,数据库的列和表被组织起来,以确保数据库完整性约束正确维护任何依赖关系。
数据库规范化的四种类型如下:
- 第一范式(1NF)
- 第二范式(2NF)
- 第三范式(3NF)
- Boyce Codd范式或第四范式(BCNF或4NF)
SQL中的索引和约束是什么?
索引是SQL中最重要的概念之一。它们允许我们快速在大型数据库中找到特定行的数据。它们还可以帮助我们强制执行约束,这些约束是在满足某些条件时告诉数据库如何行为的规则。
索引用于通过加快表中数据的搜索来提高查询性能。它们还用于提高表中数据的可读性。
约束用于限制可以输入表中的数据类型。这确保了表中数据的准确性和可靠性。如果约束与数据操作之间存在任何违反,操作将被中止。
常用的SQL约束有哪些?
常用的SQL约束包括:
- CREATE INDEX:此命令确保为表创建索引,以便简化数据检索。
- FOREIGN KEY:一个表的外键必须连接具有相似属性的表。
- 默认值:如果未为列的字段提供值,则为这些字段提供默认值。
- 唯一:指定列中的每个值必须是不同的。
- 主键:一个表的主键必须唯一标识每一行。
- 非空:此条件确保列不接受NULL值。
- 检查:它确保每个列字段都符合预定要求。
在SQL中,NULL是否等于0?
在SQL中,NULL值表示不可用或未分配的值。空格(”)或零(0)不等同于NULL值。您不能使用比较运算符“=”或“>”将NULL值与其他值进行比较,因为它既不能等于也不能不等于任何其他值。
如何防止SQL注入攻击?
除了不断扫描和penetration testing等安全方法外,输入验证、净化、预处理语句和参数化SQL查询等安全方法对于防止SQL injection攻击至关重要。此外,像防火墙这样的快速防御措施有助于保护SQL数据库。
什么是动态SQL,何时可以使用它?
动态SQL是一种您可以根据一个或多个条件(包括当前日期、当前时间或任何其他条件)在运行时修改查询的功能。
您可以使用动态SQL以有意义的方式修改查询,并帮助您实现目标或简单地增强您的编程技能。无论是创建新应用程序、改进数据库还是为生产系统添加数据仓库功能,您都可以使用动态SQL来完成所有这些。
SQL中的键有哪些不同类型?
主键:数据库表中的每一行或记录都由一个称为主键的字段唯一标识。唯一值必须在主键中。主键字段不能包含NULL值。每个表只能有一个主键,由一个或多个字段组成。
外键: 在表中与另一个表的主键相关联的字段或字段组称为外键。具有主键的表称为父表,而具有外键的表称为子表。
超键: 超键是帮助识别表中条目的键或键集。尽管不需要所有属性来识别记录,但超键可以有一个或多个属性。
候选键: 候选键是超键的子集,可用于根据一个或多个属性在数据库中识别记录。与超键不同,候选键的所有特性都必须有助于识别记录。
组合键: 组合键是表中两个或多个列的组合,用于识别表中的行。组合键是具有其他属性或列的主键。
SQL中的索引类型有哪些?
以下是SQL中的索引类型:
- 哈希索引
- 内存优化的非聚集索引
- 聚集索引
- 非聚集索引
- 唯一索引
- 列存储索引
- 包含列的索引
- 计算列上的索引
- 筛选索引
- 空间索引
- XML索引
- 全文索引
什么是缓冲池,并且提到它的好处是什么?
在SQL中,缓冲池也称为缓冲高速缓存。缓冲池可由所有资源使用以存储其缓存的数据页。在设置SQL Server实例时,可以指定缓冲池的大小。缓冲池的大小决定了它可以容纳多少页。
缓冲池的好处如下:
- 改进I/O性能
- 事务吞吐量增长
- 减少I/O延迟
- 提高读取性能
什么是依赖性,并提到不同的依赖性?
当一个对象在另一个对象中保存的SQL语句中被名称引用时,这两个对象之间建立了依赖关系。术语“引用实体”指的是出现在SQL表达式中的对象,而术语“引用实体”指的是包含SQL表达式的对象。
SQL中的不同类型的依赖关系如下:
- 函数依赖性
- 完全函数依赖性
- 多值依赖性
- 传递依赖性
- 部分依赖性
什么是SQL连接,最常用的SQL连接是什么?
连接是SQL中数据管理的基本部分。它们允许将两个或多个表连接在一起,创建一个可以用来分析数据的单个表。它们还提供了一种根据单个表中的条件过滤结果的方法,这在尝试在大型表中查找特定行或列时很有用。
SQL中有四种主要类型的连接:内连接、外连接、交叉连接和自连接。
SQL中的集合运算符是什么?
使用集合运算符可以将来自相同类型的一个或多个表的数据组合在一起。SQL集合和SQL连接运算符类似,但存在一些关键区别。SQL集合运算符从不同的查询中收集记录,而SQL连接将不同表中的列组合在一起。复合SQL查询是包括集合运算的查询。
结论
我希望这些SQL面试问题能够为您提供面试的预期。为了破解SQL面试,需要更多地接触SQL环境,这可以通过深入学习SQL来实现。为了评估关键的SQL原则,您还必须练习SQL查询面试问题并继续阅读。
如果您正在寻找SQL查询的澄清,请访问SQL cheat sheet以获取有关SQL语句的更多见解。
要通过执行SQL查询获得实际操作经验,请查看这些SQL practice platforms。