版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQLServer高频面试题及详细答案(实战版)一、SQL基础语法类1、说说SQL中DDL、DML、DQL、DCL、TCL的区别,分别包含哪些常用语句?这五类是SQL语句的核心分类,日常开发和运维高频使用,具体区分如下:DDL(数据定义语言):用于定义和修改数据库、表、字段的结构,不操作表数据。常用语句:CREATE(创建)、ALTER(修改)、DROP(删除)、TRUNCATE(清空表结构保留,删除全部数据)。DML(数据操作语言):用于操作表中的业务数据,是开发最常用语句。常用语句:INSERT(新增)、UPDATE(更新)、DELETE(删除)。DQL(数据查询语言):仅用于查询数据,不会修改任何库表结构和数据。常用语句:SELECT。DCL(数据控制语言):用于权限管理,控制用户对数据库的操作权限。常用语句:GRANT(授权)、REVOKE(收回权限)。TCL(事务控制语言):用于管理数据库事务,保证数据一致性。常用语句:COMMIT(提交事务)、ROLLBACK(回滚事务)、SAVETRANSACTION(设置保存点)。2、DELETE、TRUNCATE、DROP三者的核心区别是什么?三者都可删除数据/对象,核心差异在日志、事务、自增列、效率四个维度,是面试高频对比题:DELETE:属于DML语句,可带WHERE条件精准删除数据;会记录详细日志,支持事务回滚;不会重置自增列值;删除速度最慢,适合批量少量、精准删除业务数据。TRUNCATE:属于DDL语句,清空整张表所有数据,无法加WHERE条件;仅记录极简日志,不支持逐条数据回滚;会重置自增列初始值;删除速度极快,适合清空测试表、临时表全量数据。DROP:属于DDL语句,直接删除整张表(结构+数据+索引+约束),也可删除数据库、视图等对象;无日志记录,无法回滚;彻底释放表占用的存储空间,风险最高,仅用于废弃表、废弃库删除。补充:生产环境禁止随意使用TRUNCATE和DROP,必须提前备份数据。3、WHERE、GROUPBY、HAVING、ORDERBY的执行顺序和使用区别?完整执行顺序:FROM→WHERE→GROUPBY→聚合函数→HAVING→ORDERBY→SELECT核心区别:WHERE:分组前过滤原始数据,作用于单条数据,不能使用聚合函数(SUM、COUNT、MAX等)。GROUPBY:根据指定字段对过滤后的数据进行分组。HAVING:分组后过滤分组结果,专门用于聚合函数条件筛选,仅对分组后的统计数据生效。ORDERBY:最后执行,对最终查询结果进行排序,可使用字段别名。示例:统计各部门人数大于5的部门,按人数降序排列SELECTdeptId,COUNT(*)ASnumFROMempWHEREstatus=1GROUPBYdeptIdHAVINGCOUNT(*)>5ORDERBYnumDESC4、UNION和UNIONALL的区别?UNION:合并多个查询结果,自动去重,且默认排序;需要比对所有字段数据,运算开销大,执行效率低。UNIONALL:直接拼接多个查询结果,不去重、不排序;无比对运算,开销极小,执行效率远高于UNION。实战建议:业务中无重复数据场景,优先使用UNIONALL;仅需要去重时使用UNION。二、索引核心面试题(重点)1、SQLServer有哪些常见索引类型?各自适用场景?(1)聚集索引(ClusteredIndex)表的数据行物理存储顺序和索引顺序一致,一张表有且仅有一个聚集索引,默认主键就是聚集索引。适用场景:范围查询(BETWEEN、>、<、ORDERBY、GROUPBY)、大量数据检索。(2)非聚集索引(Non-ClusteredIndex)独立于数据存储,索引节点存储索引键和聚集索引键(行指针),一张表可建多个非聚集索引。适用场景:单值精准查询、少量字段查询、高频WHERE条件字段。(3)唯一索引保证索引字段数据唯一,可空(仅允许一条NULL),分为唯一聚集、唯一非聚集索引。用于手机号、身份证、账号等唯一字段约束。(4)复合索引包含多个字段的非聚集索引,遵循最左前缀原则。查询条件匹配左侧连续字段时,索引才会生效。(5)包含索引索引键只放高频查询条件字段,将查询返回字段包含在索引中,实现索引覆盖,避免书签查找,大幅提升查询效率。2、什么是索引最左前缀原则?为什么会失效?复合索引遵循从左到右的匹配规则,例如索引(a,b,c),查询条件满足最左连续字段则索引生效:生效场景:wherea=?、wherea=?andb=?、wherea=?andb=?andc=?失效场景:whereb=?、wherec=?、whereb=?andc=?(跳过最左字段a)补充:索引字段使用函数、运算、隐式转换、模糊查询前置通配符(%xxx)、OR拼接非索引字段,都会导致索引失效。3、什么是书签查找、索引扫描、索引查找?索引查找(IndexSeek):最优情况,通过索引精准定位数据,扫描数据量极少,查询效率最高。索引扫描(IndexScan):遍历整个索引页查找数据,类似全表扫描,索引失效、数据筛选率低时会出现,效率较低。书签查找(KeyLookup):非聚集索引中只存储索引键,若查询字段不在索引中,需要通过聚集索引键回表查询完整数据,就是书签查找。数据量大时会严重拖慢查询,可通过包含索引解决。4、索引是不是越多越好?为什么?不是,索引是查询快、增删改慢,过多索引会严重影响写入性能:查询场景:索引可快速定位数据,提升查询效率。增删改场景:表数据变更时,所有关联的索引都需要同步更新、重构,索引越多,IO开销和日志开销越大,写入速度越慢。实战原则:查询多、变更少的表可适当加索引;频繁新增、更新的表严控索引数量。三、事务、锁与并发(核心难点)1、什么是数据库事务?四大特性ACID分别是什么?事务是一组不可分割的SQL操作单元,要么全部执行成功,要么全部失败回滚,用于保证业务数据一致性。四大特性:原子性(Atomicity):事务整体不可拆分,全部成功或全部回滚。一致性(Consistency):事务执行前后,数据库数据完整性、约束规则保持一致(如转账总额不变)。隔离性(Isolation):多个并发事务之间相互隔离,互不干扰。持久性(Durability):事务提交成功后,数据永久写入数据库,断电、重启不会丢失。2、SQLServer事务隔离级别有哪些?各自解决什么问题?SQLServer共5种隔离级别,用于解决并发带来的脏读、不可重复读、幻读问题:读未提交(ReadUncommitted):最低级别,允许读取未提交数据,存在脏读、不可重复读、幻读,几乎不使用。读已提交(ReadCommitted):默认隔离级别,只能读取已提交数据,解决脏读,存在不可重复读、幻读。可重复读(RepeatableRead):事务内多次读取同一数据,结果一致,解决脏读、不可重复读,存在幻读。快照(Snapshot):基于行版本控制,读取历史快照数据,无锁等待,解决脏读、不可重复读、幻读。可序列化(Serializable):最高隔离级别,串行化执行事务,解决所有并发问题,但锁等待严重、并发性能极低。名词解释:脏读(读取未提交回滚数据)、不可重复读(同一事务两次读数据不一致)、幻读(同一事务两次查询行数不一致)。3、SQLServer常见锁类型?死锁产生的条件及解决办法?常见锁类型共享锁(S锁):读锁,多个事务可同时加共享锁,兼容共享锁,排斥排他锁。排他锁(X锁):写锁,新增、更新、删除时触发,独占资源,不兼容任何锁。更新锁(U锁):介于共享锁和排他锁之间,避免更新死锁,一次仅一个事务持有。死锁四大必要条件资源互斥、请求保持、不可剥夺、循环等待(四个条件同时满足必产生死锁)死锁解决和优化方案统一SQL执行顺序,避免交叉锁等待;缩短事务执行时间,避免长事务占用锁资源;使用行版本隔离级别,减少锁竞争;开启死锁监控,捕获死锁日志并优化SQL。四、查询优化与性能调优1、日常SQL优化的常用思路有哪些?从索引、SQL写法、业务逻辑、数据库配置四个维度优化,核心实操方案:避免索引失效:禁止字段加函数、运算、前置%模糊查询、隐式类型转换;精准查询:禁止SELECT*,只查询业务需要的字段,减少数据传输;优先使用UNIONALL替代UNION,减少去重排序开销;大表分页使用覆盖索引+键值分页,避免OFFSET大偏移量;拆分长事务、慢SQL,减少锁等待和资源占用;定期重建、重组索引,清理碎片,提升索引效率;合理使用临时表、表变量,优化多表关联复杂查询。2、临时表和表变量的区别及适用场景?表变量(@table):存储在内存(数据量大时写入tempdb),事务回滚不影响表变量数据,锁开销小、速度快。适合小数据量、短周期、简单查询。临时表(#table):永久存储在tempdb,支持索引、约束,事务可回滚,支持大数据量操作。适合大数据量、复杂计算、多步骤逻辑。3、什么是执行计划?如何通过执行计划优化SQL?执行计划是SQLServer解析SQL后,生成的具体执行方案,展示语句的执行流程、索引使用、数据扫描方式、开销占比。优化判断依据:出现「表扫描/索引扫描」:说明索引失效,需要新增或优化索引;出现「书签查找」:新增包含索引,实现索引覆盖;某步骤开销占比过高:针对性优化该段关联、筛选逻辑;关联顺序不合理:手动调整多表JOIN顺序,小表驱动大表。五、常用函数与实操问题1、ROW_NUMBER、RANK、DENSE_RANK排序函数区别?三个函数均为分组排序,核心差异在重复值排名和序号连续性,是分页、去重、排名常用函数:ROW_NUMBER():连续不重复序号,1、2、3、4,无论数据是否重复,序号依次递增,适合分页查询。RANK():跳跃排名,重复数据同序号,后续序号跳过,例:1、2、2、4,适合竞赛排名。DENSE_RANK():连续排名,重复数据同序号,后续序号连续,例:1、2、2、3,适合层级排名。2、NULL值处理注意事项?NULL与任何值运算结果均为NULL,需要用ISNULL(字段,默认值)转换;判断空值必须用ISNULL/ISNOTNULL,不能用=NULL;GROUPBY会将多个NULL值归为同一组;索引字段存在大量NULL会导致索引利用率降低,可设置字段默认值。六、数据库运维与架构基础1、说说SQLServer日志文件和数据文件作用?数据文件(.mdf/.ndf):存储数据库所有业务数据、索引、表结构,mdf是主数据文件,ndf是辅助数据文件。日志文件(.ldf):记录所有数据库的增删改操作日志,用于事务回滚、数据恢复、故障还原,是数据一致性的核心保障。2、数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年中国七彩铁挂锁市场现状数据分析及前景预测报告
- 2026事业单位工勤技能-江苏-江苏图书资料员二级(技师)历年参考题库含答案详解
- 2026事业单位工勤技能-新疆-新疆政务服务办事员四级(中级工)历年参考题库含答案详解
- 《中华人民共和国传染病防治法》培训考核试卷(含答案)
- 2027年中考数学一轮复习单元巩固训练 一元二次方程(含答案)
- 9.练就过硬本领学案 2026-2027学年统编版道德与法治九年级下册
- 高校辅导员迎新住宿安排标准操作手册
- 制药行业工艺工程师绩效衡量表
- 游戏开发与运营效果绩效衡量表
- 技术总监业绩考核表
- 2026贵州省安全员《C证》考试题库
- 2026年烟草江苏公司招聘考试试题及答案
- 国有企业供应链管理制度
- 交管12123学法减分题库500题(含标准答案+解析2026全国完整版)
- 2025年中国外阴清洗液市场调查研究报告
- 2026年房地产经纪协理考试题库及完整答案(历年真题)
- 大疆四旋翼无人机课件
- 第9课 数据传输有新意课件 2025-2026学年 人教版 初中信息科技七年级全一册
- 带式输送机无人值守控制系统研究
- 铃儿响叮当奥尔夫课件
- 沪教版六年级第07讲一次式(知识点题型分层强化)(原卷版)
评论
0/150
提交评论