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

下载本文档

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

文档简介

2025年sq数据库考试题及答案一、单项选择题(每题2分,共20分)1.以下关于关系数据库模型的描述中,错误的是()。A.关系中的每一列数据类型必须相同B.关系中允许存在重复的元组(行)C.关系的列顺序可以任意交换D.关系的主键能唯一标识一个元组答案:B2.若要在SQL中为表“employees”的“salary”字段添加CHECK约束,确保工资不低于5000且不超过100000,正确的语句是()。A.ALTERTABLEemployeesADDCONSTRAINTchk_salaryCHECK(salaryBETWEEN5000AND100000)B.ALTERTABLEemployeesADDCONSTRAINTchk_salaryCHECK(salaryIN(5000,100000))C.ALTERTABLEemployeesADDCONSTRAINTchk_salaryCHECK(salary>=5000ORsalary<=100000)D.ALTERTABLEemployeesADDCONSTRAINTchk_salaryCHECK(salaryNOTBETWEEN5000AND100000)答案:A3.执行以下SQL语句后,结果集中的行数为()。SELECTFROMordersLEFTJOINcustomersONorders.customer_id=customers.customer_idWHEREcustomers.customer_idISNULL;A.所有未关联客户的订单数B.所有已关联客户的订单数C.所有客户的记录数D.所有订单与客户的交叉行数答案:A4.事务的“原子性”指的是()。A.事务一旦提交,其结果对后续事务可见B.事务执行过程中不受其他事务干扰C.事务中的操作要么全部完成,要么全部不完成D.事务执行前后数据库保持一致性状态答案:C5.关于B+树索引与哈希索引的对比,正确的是()。A.B+树索引适合范围查询,哈希索引适合等值查询B.哈希索引支持顺序访问,B+树索引不支持C.B+树索引的空间占用比哈希索引小D.哈希索引在重复值较多时性能更优答案:A6.触发器的执行时机不包括()。A.AFTERINSERTB.BEFOREUPDATEC.INSTEADOFDELETED.DURINGSELECT答案:D7.以下哪种情况会破坏数据库的参照完整性?()A.向子表插入一条外键不存在于主表的记录B.主表删除一条记录时,子表对应记录被级联删除C.更新主表主键时,子表外键被级联更新D.子表外键字段设置为NULL且主表允许该值答案:A8.在数据库并发控制中,“写锁(排他锁)”的作用是()。A.允许其他事务读取但禁止写入B.禁止其他事务读取和写入C.允许其他事务加共享锁D.仅禁止当前事务写入答案:B9.关系模式R(A,B,C,D),函数依赖为A→B,B→C,C→D,则R最高满足()。A.第一范式(1NF)B.第二范式(2NF)C.第三范式(3NF)D.BC范式(BCNF)答案:B(解析:存在传递依赖A→C,A→D,不满足3NF)10.以下备份方式中,恢复时间最短的是()。A.完全备份+差异备份B.完全备份+日志备份C.增量备份+日志备份D.仅完全备份答案:D二、填空题(每题2分,共20分)1.关系数据库中,二维表的行称为________,列称为________。答案:元组(或记录);属性(或字段)2.SQL中,用于限制分组查询结果的子句是________。答案:HAVING3.事务的ACID特性中,“I”代表________。答案:隔离性(Isolation)4.B+树索引的叶子节点存储________和________。答案:键值;数据行指针(或具体数据)5.触发器按触发事件可分为INSERT触发器、UPDATE触发器和________。答案:DELETE触发器6.第三范式(3NF)要求关系模式中不存在________的传递函数依赖。答案:非主属性对码7.数据库死锁的解决方法包括________和________(任写两种)。答案:超时机制;死锁检测与回滚8.日志文件的两种主要类型是________和________。答案:事务日志;重做日志(或撤销日志)9.数据库镜像技术的核心是通过________保证主库与镜像库的数据一致性。答案:实时同步写入10.热备份(在线备份)的前提是数据库支持________。答案:事务日志归档(或连续日志记录)三、简答题(每题8分,共40分)1.简述关系数据库的三大完整性约束及其作用。答案:(1)实体完整性:通过主键约束实现,确保表中每个元组唯一标识,防止重复或缺失主键值。(2)参照完整性:通过外键约束实现,保证子表外键与主表主键的对应关系,维护表间数据一致性。(3)用户定义完整性:通过CHECK约束、默认值等实现,限制字段的取值范围或格式,满足业务规则(如年龄>0)。2.事务的隔离级别有哪些?简述“可重复读”与“读已提交”的区别。答案:隔离级别包括:读未提交(ReadUncommitted)、读已提交(ReadCommitted)、可重复读(RepeatableRead)、串行化(Serializable)。区别:读已提交允许事务读取其他事务已提交的修改,但同一事务内多次读取同一数据可能得到不同结果(不可重复读);可重复读通过锁定读取的数据,保证同一事务内多次读取结果一致,避免不可重复读,但可能存在幻读(新插入的符合条件的记录)。3.索引的优缺点分别是什么?何时不建议创建索引?答案:优点:加速查询(尤其是WHERE、JOIN、ORDERBY操作);减少全表扫描的I/O消耗;提高分组和排序效率。缺点:增加数据插入、更新、删除的时间(需维护索引结构);占用额外存储空间;可能影响查询优化器的执行计划选择。不建议创建索引的情况:表数据量小;字段取值重复率极高(如“性别”字段只有两个值);频繁更新的字段;查询很少涉及的字段。4.触发器与存储过程的主要区别是什么?答案:(1)触发方式:触发器由特定事件(INSERT/UPDATE/DELETE)自动触发执行;存储过程需显式调用。(2)作用范围:触发器绑定到具体表,用于表级事件响应;存储过程是独立的代码块,可处理复杂业务逻辑。(3)参数传递:触发器通常不接收参数,依赖触发事件的上下文(如OLD/NEW行数据);存储过程可定义输入/输出参数。(4)应用场景:触发器用于强制业务规则、审计日志记录;存储过程用于封装重复操作、减少网络传输。5.简述数据库备份与恢复的主要策略,并说明“完全备份+日志备份”的优势。答案:主要策略:完全备份(备份全部数据)、差异备份(备份上次完全备份后修改的数据)、增量备份(备份上次备份后修改的数据)、日志备份(备份事务日志)。“完全备份+日志备份”的优势:完全备份提供基础恢复点,日志备份记录两次完全备份间的所有事务,可将数据库恢复到任意时间点(如故障前瞬间),兼顾备份时间与恢复灵活性,适用于对数据一致性要求高的场景(如银行交易系统)。四、应用题(每题10分,共20分)1.某公司数据库包含以下表结构:部门表(dept):dept_id(主键,INT),dept_name(VARCHAR)员工表(emp):emp_id(主键,INT),emp_name(VARCHAR),dept_id(外键,INT),salary(DECIMAL),hire_date(DATE)请编写SQL语句实现以下需求:(1)查询2023年1月1日后入职的员工,按部门分组,显示部门名称、员工数量及平均工资(保留2位小数),仅显示员工数量≥3的部门。(2)使用窗口函数,查询每个部门中工资排名前2的员工(若有并列,保留所有并列员工)。答案:(1)SELECTd.dept_name,COUNT(e.emp_id)ASemp_count,ROUND(AVG(e.salary),2)ASavg_salaryFROMdeptdJOINempeONd.dept_id=e.dept_idWHEREe.hire_date>'2023-01-01'GROUPBYd.dept_id,d.dept_nameHAVINGCOUNT(e.emp_id)>=3;(2)WITHranked_empAS(SELECTe.emp_name,e.dept_id,e.salary,DENSE_RANK()OVER(PARTITIONBYe.dept_idORDERBYe.salaryDESC)ASrankFROMempe)SELECTr.emp_name,d.dept_name,r.salary,r.rankFROMranked_emprJOINdeptdONr.dept_id=d.dept_idWHEREr.rank<=2;2.某电商数据库的“订单表”(orders)包含字段:order_id(主键)、user_id、order_time、total_amount,数据量约5000万条。业务反馈“查询近30天内用户的订单总金额”速度很慢,请分析可能原因并提出优化方案。答案:可能原因:(1)未在order_time或user_id字段上创建索引,导致全表扫描;(2)查询条件中order_time使用函数(如DATE(order_time)),导致索引失效;(3)表未分区,5000万条数据集中存储,I/O效率低;(4)统计信息过时,查询优化器选择错误的执行计划;(5)高并发下锁竞争导致查询阻塞。优化方案:(1)创建复合索引(user_id,order_time),覆盖常用查询条件,减少回表;(2)确保查询条件直接使用order_time(如order_time>=CURRENT_DATEINTERVAL'30days'),避免函数转换;(3)按order_time做范围分区(如按月分区),缩小查询范围;(4)定期更新统计信息(ANALYZETABLEorders),帮助优化器选择最优索引;(5)若查询频繁,可创建汇总表(如每天凌晨汇总前一天用户订单金额),查询时直接读取汇总数据;(6)调整事务隔离级别为“读已提交”,减少锁等待时间。五、综合题(20分)设计一个小型“社区图书馆管理系统”数据库,要求:(1)绘制简化E-R图(用文字描述实体及关系即可);(2)设计主要数据表结构(包含字段、数据类型、约束);(3)为“查询某本书借出过多少次”编写SQL语句;(4)设计一个事务,实现“读者借书”操作(需处理库存检查、借书记录插入、库存更新,要求原子性)。答案:(1)E-R图描述:实体:书籍(Book)、读者(Reader)、借书记录(BorrowRecord)。关系:书籍与借书记录:1:N(一本书可被多次借阅);读者与借书记录:1:N(一个读者可借多本书);书籍包含属性:书号(ISBN)、书名、作者、出版社、库存数量;读者包含属性:读者ID、姓名、联系方式、最大可借数量;借书记录包含属性:记录ID、ISBN、读者ID、借出时间、应还时间、实际归还时间。(2)主要数据表结构:书籍表(book):isbn(VARCHAR(13),主键)book_name(VARCHAR(200),NOTNULL)author(VARCHAR(100),NOTNULL)publisher(VARCHAR(100))stock(INT,NOTNULL,CHECK(stock>=0))读者表(reader):reader_id(INT,主键,自增)name(VARCHAR(50),NOTNULL)contact(VARCHAR(100),NOTNULL)max_borrow(INT,NOTNULL,DEFAULT5)借书记录表(borrow_record):record_id(INT,主键,自增)isbn(VARCHAR(13),外键REFERENCESbook(isbn))reader_id(INT,外键REFERENCESreader(reader_id))borrow_time(DATETIME,NOTNULL,DEFAULTCURRENT_TIMESTAMP)due_time(DATETIME,NOTNULL)return_time(DATETIME)(3)查询某本书借出过多少次(假设书名为“数据库系统概念”):SELECTCOUNT()ASborrow_countFROMborrow_recordbrJOINbookbONbr.isbn=b.isbnWHEREb.book_name='数据库系统概念';(4)“读者借书”事务(以MySQL为例,使用BEGIN/COMMIT):BEGIN;检查读者是否可借(当前已借数量<max_borrow)SELECT@current_borrow:=COUNT()FROMborrow_recordWHE

温馨提示

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

最新文档

评论

0/150

提交评论