2025年数据库SQLSERVER期末考试题及答案_第1页
2025年数据库SQLSERVER期末考试题及答案_第2页
2025年数据库SQLSERVER期末考试题及答案_第3页
2025年数据库SQLSERVER期末考试题及答案_第4页
2025年数据库SQLSERVER期末考试题及答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年数据库SQLSERVER期末考试题及答案一、单项选择题(每题2分,共20分)1.以下关于SQLServer2022(假设2025年教学重点仍为该版本)数据库文件的描述,错误的是:A.主数据文件扩展名.mdf,每个数据库至少有一个B.次要数据文件扩展名.ndf,用于存储额外数据C.事务日志文件扩展名.ldf,可存在多个D.所有数据文件必须存储在同一物理磁盘答案:D2.某表包含字段:学生ID(主键,int)、姓名(nvarchar(20))、入学时间(datetime)、班级ID(int),若需快速按班级ID+入学时间查询学生,最优索引策略是:A.在班级ID列创建非聚集索引B.在(班级ID,入学时间)上创建聚集索引C.在(入学时间,班级ID)上创建非聚集索引D.在班级ID列创建哈希索引答案:B3.执行以下事务时,若在第二步执行前数据库崩溃,恢复后事务状态为:BEGINTRANSACTIONUPDATE账户SET余额=余额-100WHERE账户ID=1(步骤1)UPDATE账户SET余额=余额+100WHERE账户ID=2(步骤2)COMMITA.步骤1回滚,步骤2未执行B.步骤1提交,步骤2未执行C.两个步骤均提交D.事务处于挂起状态答案:A4.关于SQLServer备份,以下说法正确的是:A.差异备份仅备份自上次完整备份后变化的数据页B.事务日志备份必须在完整备份之后执行C.文件组备份适用于超大型数据库的部分恢复D.简单恢复模式支持完整备份和事务日志备份答案:C5.某表数据量为5000万行,经常执行"SELECTFROM表WHERE状态=1ORDERBY更新时间DESC",最优优化措施是:A.添加状态列的非聚集索引B.添加(状态,更新时间)的降序非聚集索引C.将更新时间列设为聚集索引D.添加(更新时间,状态)的非聚集索引答案:B6.以下约束类型中,不能通过CHECK约束实现的是:A.性别只能是'男'或'女'B.年龄必须大于18C.出生日期不能晚于当前日期D.学生ID必须唯一答案:D7.执行"EXECsp_helpdb'教学管理'"后,不会显示的信息是:A.数据库文件物理路径B.数据库所有者C.数据库当前连接数D.数据文件初始大小答案:C8.关于窗口函数,以下语法正确的是:A.SELECT学号,成绩,RANK()OVER(ORDERBY成绩DESC)排名FROM成绩表B.SELECT学号,成绩,SUM(成绩)OVER(PARTITIONBY班级ORDERBY学号)累计FROM成绩表C.SELECT学号,成绩,TOP3成绩OVER()最高成绩FROM成绩表D.SELECT学号,成绩,ROW_NUMBER()OVER(GROUPBY班级)行号FROM成绩表答案:A9.以下关于索引视图的描述,错误的是:A.必须包含聚集索引B.查询时自动使用,无需显式调用C.基础表数据变更时自动更新D.适用于频繁更新的业务场景答案:D10.若需限制用户只能查询"学生表"的姓名和年龄字段,且不能查看其他列,最优实现方式是:A.授予SELECT权限时指定列B.创建视图仅包含目标列并授予视图查询权限C.使用行级安全性策略D.为用户设置数据库角色答案:B二、填空题(每空1分,共15分)1.SQLServer数据库的三种主要文件类型是主数据文件、次要数据文件和(事务日志文件)。2.存储过程参数中,使用(OUTPUT)关键字声明的参数可以将值返回给调用方。3.事务的四大特性ACID分别是原子性、一致性、(隔离性)和持久性。4.若要查看当前数据库所有用户表的DDL脚本,可使用(sp_helptext)系统存储过程配合查询,或通过(sys.tables)系统视图结合(sys.sql_modules)视图查询。5.索引分为聚集索引和非聚集索引,其中(聚集)索引决定了表中数据的物理存储顺序。6.数据库恢复模式包括简单恢复模式、完整恢复模式和(大容量日志恢复)模式。7.执行"DBCCCHECKDB"命令的主要作用是(检查数据库完整性)。8.窗口函数中,用于返回连续排名(无重复值)的函数是(ROW_NUMBER()),返回有间隔排名的是(RANK()),返回无间隔排名的是(DENSE_RANK())。9.若要将数据库"旧系统"的结构和数据复制到新服务器,且不影响原数据库,可使用(分离/附加)或(备份/还原)操作。10.触发器分为DML触发器和(DDL)触发器,其中AFTER触发器在(数据操作完成后)执行,INSTEADOF触发器在(数据操作执行前)替代原操作。三、简答题(每题6分,共30分)1.简述聚集索引与非聚集索引的区别及适用场景。答案:聚集索引决定数据物理存储顺序,一个表只能有一个,适合经常按范围查询(如日期范围)或主键列。非聚集索引存储索引键和行定位器(RID或聚集索引键),一个表可多个,适合经常单独查询的列或多列查询条件(组合索引)。聚集索引适合高查询低更新场景,非聚集索引适合频繁查询不同列的场景。2.说明事务隔离级别"可重复读"与"可串行化"的区别。答案:可重复读(RepeatableRead)保证在事务期间多次读取同一数据结果一致,防止脏读和不可重复读,但可能出现幻读(新插入符合条件的行)。可串行化(Serializable)通过范围锁防止幻读,事务执行时如同串行执行,隔离级别最高,但并发性最低,适合对数据一致性要求极高的场景(如金融交易)。3.简述视图的作用及使用注意事项。答案:作用:简化复杂查询、提供数据安全(限制列/行访问)、隐藏表结构变化(封装底层表变更)、实现逻辑数据分组。注意事项:视图本身不存储数据(索引视图除外),频繁通过视图更新需确保视图满足可更新条件(如不包含聚合函数、DISTINCT等),大量视图可能影响查询性能,需合理设计。4.列举三种常见的索引优化策略,并说明适用场景。答案:(1)组合索引:将常用查询条件列按顺序创建索引(左前缀匹配),适用于多列查询(如WHEREa=1ANDb=2)。(2)覆盖索引:索引包含查询所需所有列,避免回表,适用于SELECT列较少且固定的查询。(3)索引包含列:在非聚集索引中添加INCLUDE列,存储额外列数据,适用于查询需要非索引键列但不想创建宽组合索引的场景。(4)删除冗余索引:移除被其他索引完全覆盖的索引,减少维护开销(如已有(a,b)索引,删除单独的a索引)。5.说明完整备份+差异备份+事务日志备份的恢复策略步骤。答案:(1)恢复最近一次完整备份(WITHNORECOVERY);(2)恢复最新的差异备份(WITHNORECOVERY);(3)按顺序恢复差异备份之后的所有事务日志备份(每个日志备份均使用WITHNORECOVERY,最后一个日志备份使用WITHRECOVERY);(4)数据库进入可用状态。该策略支持恢复到故障前的任意时间点,适用于需要高数据保护的生产环境。四、操作题(共25分)【背景】某培训学校需设计"学员管理系统"数据库,包含以下业务需求:-学员表(学员ID,姓名,性别,出生日期,联系电话,报名时间)-课程表(课程ID,课程名称,课程类型(枚举:考证/技能/兴趣),课时,单价)-报名记录表(记录ID,学员ID,课程ID,报名日期,优惠金额,应缴金额(=课时单价-优惠金额))要求:根据以上需求完成以下操作。1.(5分)创建数据库"TrainingDB",主数据文件初始大小100MB,最大无限制,增长步长10%;事务日志文件初始大小50MB,最大200MB,增长步长5MB。答案:CREATEDATABASETrainingDBONPRIMARY(NAME=TrainingDB_Data,FILENAME='D:\Data\TrainingDB.mdf',SIZE=100MB,MAXSIZE=UNLIMITED,FILEGROWTH=10%)LOGON(NAME=TrainingDB_Log,FILENAME='D:\Log\TrainingDB.ldf',SIZE=50MB,MAXSIZE=200MB,FILEGROWTH=5MB);2.(6分)创建学员表,要求:-学员ID为主键,自增(起始值1001,增量1)-性别只能是'男'或'女'(CHECK约束)-联系电话格式为11位数字(CHECK约束)-报名时间默认值为当前系统时间答案:CREATETABLE学员表(学员IDINTIDENTITY(1001,1)PRIMARYKEY,姓名NVARCHAR(20)NOTNULL,性别NCHAR(1)NOTNULLCHECK(性别IN('男','女')),出生日期DATETIMENOTNULL,联系电话CHAR(11)NOTNULLCHECK(联系电话LIKE'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),报名时间DATETIMEDEFAULTGETDATE()NOTNULL);3.(6分)编写SQL语句,查询2023年1月1日后报名,且报名了"考证"类型课程的学员姓名、课程名称、应缴金额(要求使用多表连接,结果按应缴金额降序排列)。答案:SELECTa.姓名,c.课程名称,b.应缴金额FROM学员表aINNERJOIN报名记录表bONa.学员ID=b.学员IDINNERJOIN课程表cONb.课程ID=c.课程IDWHEREa.报名时间>='2023-01-01'ANDc.课程类型='考证'ORDERBYb.应缴金额DESC;4.(4分)为课程表的"课程类型"列创建非聚集索引,要求索引名称为IX_课程_类型。答案:CREATENONCLUSTEREDINDEXIX_课程_类型ON课程表(课程类型);5.(4分)创建存储过程proc_GetStudentByAge,输入参数为最小年龄和最大年龄,输出符合条件的学员数量。答案:CREATEPROCEDUREproc_GetStudentByAge@MinAgeINT,@MaxAgeINT,@CountINTOUTPUTASBEGINSELECT@Count=COUNT()FROM学员表WHEREDATEDIFF(YEAR,出生日期,GETDATE())BETWEEN@MinAgeAND@MaxAge;END;五、综合题(10分)【项目背景】某公司需要对"销售管理系统"数据库进行性能优化,当前存在以下问题:-订单表(1.2亿行)查询"最近30天未付款订单"耗时12秒(查询条件:付款状态=0AND下单时间>GETDATE()-30)-员工表(5000行)经常执行"SELECT姓名,部门FROM员工表WHERE员工ID=XXX",响应时间不稳定-数据库每天凌晨2点进行完整备份,日志文件增长过快(日均增长50GB)请结合SQLServer知识,提出具体优化方案(需说明原因及操作步骤)。答案:1.订单表优化方案:(1)分析:查询条件涉及"付款状态"和"下单时间",数据量极大,需索引支持。(2)优化措施:创建组合非聚集索引IX_订单_状态_时间,包含列(付款状态,下单时间),并INCLUDE必要的返回列(如订单ID、客户ID等)。(3)原因:组合索引覆盖查询条件,避免全表扫描;INCLUDE列减少回表操作。(4)操作:CREATENONCLUSTEREDINDEXIX_订单_状态_时间ON订单表(付款状态,下单时间DESC)INCLUDE(订单ID,客户ID);--根据实际查询返回列调整2.员工表优化方案:(1)分析:员工表数据量小但查询响应不稳定,可能是缺少索引或统计信息过时。(2)优化措施:①检查员工ID是否为主键或已有索引,若没有则创建聚集索引(因员工ID是唯一标识,聚集索引可提升单记录查询性能);②更新统计信息:执行UPDATESTATISTICS员工表;(3)原因:聚集索引按员工ID物理排序,单记录查询只需一次索引查找;更新统计信息帮助查询优化器提供更优执行计划。(4)操作(假设无主键):ALTERTABLE员工表ADDCONSTRAINTPK_员工IDPRIMARYKEYCLUSTERED(员工ID);UPDATESTATISTICS员工表;3.日志文件增长优化方案:(1)分析:完整备份间隔过长(24小时),导致事务日志无法截断(完整恢复模式下需日志备份后才能重用空间)。(2)优化措施:①修改备份策略:每天凌晨2点完整备份+每2小时事务日志备份;②检查是否有长事务未提交,终止不必要的长事务;③若业务允许,考虑使用简单恢复模式(但会丢失日志备份点到故障点的数据)。(3)原因:增加日志备份频率可及时截断日志,减

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论