SqlServer高频面试题(持续更新251114)

SqlServer高频面试题(持续更新251114)

💡 原文中文,约18600字,阅读约需45分钟。
📝

内容提要

主键、外键、超键和候选键是数据库中用于唯一标识元组的属性集。主键是唯一且不能为空的属性组合,外键指向其他表的主键。自增列简化插入操作,触发器用于自动执行特定操作,存储过程是预编译的SQL语句集合。索引加速查询,但过多索引会影响性能。

🎯

关键要点

  • 主键、外键、超键和候选键用于唯一标识数据库中的元组。
  • 超键是能唯一标识元组的属性集,候选键是最小超键,主键是唯一且不能为空的属性组合,外键指向其他表的主键。
  • 自增列简化插入操作,避免索引分裂,提高性能。
  • 触发器在特定数据库操作前后自动执行,用于维护数据完整性和实施业务规则。
  • 存储过程是预编译的SQL语句集合,可以提高性能,通过SQL命令或API调用。
  • 存储过程的优点包括提高性能和安全性,缺点是移植性差。
  • 存储过程与函数的区别在于存储过程可以有多个返回值,而函数通常返回单一值。
  • 视图是基于SQL查询的虚拟表,游标用于逐行处理查询结果集。
  • 临时表在当前会话中创建,结束后自动删除。
  • 非关系型数据库与关系型数据库在数据模型和扩展性上有本质区别。
  • 数据库范式用于指导数据库设计,减少数据冗余。
  • 内连接只返回匹配的行,外连接返回一个表的全部行及匹配的行。
  • VARCHAR适用于长度可变的数据,CHAR适用于长度固定的数据。
  • SQL语言分为DQL、DML、DDL和DCL。
  • COUNT函数用于计算行数,COUNT(*)包括NULL值,COUNT(column)计算非NULL值。
  • 最左前缀原则是索引使用的重要原则。
  • 索引加速查询,但过多索引会影响性能。
  • 聚集索引决定数据的物理存储顺序,非聚集索引不影响物理存储顺序。
  • SQL注入攻击通过恶意SQL命令获取或篡改数据。
  • 防范SQL注入的方法包括输入验证和使用预处理语句。
  • 内存泄漏是未释放不再使用的内存,导致可用内存减少。
  • 事务是一系列操作的整体,锁用于保证事务的隔离性。
  • 过多索引会导致性能下降,需要权衡创建索引的数量。
  • 相关子查询使用外部查询的值,常用于WHERE或HAVING子句。
  • TempDB用于存储临时数据,异常变大可能由大量临时表造成。
  • 索引的优缺点包括提高查询速度和增加存储空间。
  • Job信息和系统运行语句可以通过特定表和视图获取。
  • CHECK约束确保字段只接受特定范围内的值。
  • CHAR、VARCHAR、NCHAR和NVARCHAR的区别在于存储长度和字符集。
  • TRUNCATE、DELETE和DROP的区别在于操作类型和性能。
  • 执行计划是查询优化器生成的执行路线图。
  • 覆盖索引包含查询所需的所有字段,避免键查找。
  • 索引碎片影响查询性能,维护方法包括重组和重建。
  • 不适合创建索引的情况包括表小和列值重复度低。
  • ACID属性确保事务的完整性和一致性。
  • SQL Server的隔离级别包括读未提交、读已提交、可重复读和可序列化。
  • 死锁是事务相互等待的状态,避免方法包括保持事务简短。
  • CTE用于递归查询,适合处理层次结构数据。
  • 参数嗅探问题影响存储过程性能,解决方案包括使用OPTION选项。
  • 慢查询优化方法包括添加索引和重写查询逻辑。
  • 数据库的三大范式是第一范式、第二范式和第三范式。
  • 反范式化在频繁JOIN操作和读密集型场景中考虑。
  • 完整备份、差异备份和事务日志备份的区别在于备份内容和恢复方式。
  • 简单恢复模式不备份事务日志,完整恢复模式支持时间点恢复。
  • 支持软删除的系统通过添加删除标记字段实现。
  • 循环引用的处理方案包括延迟约束检查和重新设计表结构。
  • 审计功能可以通过触发器或SQL Server的变更数据捕获实现。
  • SQL Server 2019的新特性包括智能查询处理和数据虚拟化。
  • 内存优化表适用于高并发场景和实时数据处理。
➡️

继续阅读