2026年计算机二级考试《数据库程序设计》真题卷_第1页
2026年计算机二级考试《数据库程序设计》真题卷_第2页
2026年计算机二级考试《数据库程序设计》真题卷_第3页
2026年计算机二级考试《数据库程序设计》真题卷_第4页
2026年计算机二级考试《数据库程序设计》真题卷_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

2026年计算机二级考试《数据库程序设计》真题卷第一部分选择题(共20小题,每小题2分,共40分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。1.数据库系统的核心组成部分是()A.数据库管理员B.数据库管理系统C.数据库文件D.应用系统2.将E-R模型转换为关系模型时,实体之间的多对多联系在关系模型中的实现方式是()A.单独建立一个关系模式B.并入任意一端的实体关系模式C.并入两端的实体关系模式D.以上方式均可3.有关系R(A,B,C)和S(B,C,D),下列关系运算中,要求R和S的属性个数必须相同,且对应属性域兼容的是()A.自然连接B.笛卡尔积C.并运算D.投影4.现有SQL语句“SELECTCOUNT(*),COUNT(comm)FROMemp;”,其中comm字段为员工绩效奖金,允许为空,若表中共有100条记录,其中20条记录的comm字段为NULL,下列关于查询结果的说法正确的是()A.COUNT(*)返回100,COUNT(comm)返回100B.COUNT(*)返回100,COUNT(comm)返回80C.COUNT(*)返回80,COUNT(comm)返回100D.COUNT(*)返回80,COUNT(comm)返回805.事务的四个特性中,“事务一旦提交,对数据库中数据的修改是永久性的,后续的其他操作或故障不会对其执行结果产生任何影响”描述的是()A.原子性B.一致性C.隔离性D.持久性6.下列关于数据库索引的说法,错误的是()A.聚集索引的物理存储顺序与索引键的逻辑顺序一致B.一张表可以创建多个非聚集索引C.索引越多,数据查询效率越高,数据更新效率越低D.主键约束默认会自动创建聚集索引7.有关系模式学生(学号,姓名,系号,系名,系主任),存在函数依赖:学号→姓名,学号→系号,系号→系名,系号→系主任,该关系模式最高满足()A.1NFB.2NFC.3NFD.BCNF8.下列不属于存储过程优势的是()A.减少网络传输量B.提高执行效率C.实现逻辑复用D.自动防范SQL注入9.下列触发器的触发时机中,不包含的是()A.BEFOREINSERTB.AFTERUPDATEC.INSTEADOFDELETED.BEFOREROLLBACK10.下列数据库备份类型中,仅备份上次完整备份后发生变化的数据的是()A.完全备份B.差异备份C.增量备份D.冷备份11.使用Python的pymysql库连接MySQL数据库时,用于执行SQL语句的方法是()A.connect()B.cursor()C.execute()D.commit()12.下列不属于SQL注入防范措施的是()A.使用预编译语句绑定参数B.对用户输入的特殊字符进行转义C.禁止普通用户拥有DROP、ALTER等高权限D.对查询结果进行分页处理13.关系模型的三类完整性约束中,“外键的取值要么为空,要么等于被参照关系中主键的某个取值”属于()A.实体完整性B.参照完整性C.用户定义完整性D.逻辑完整性14.下列关于GROUPBY子句和HAVING子句的说法,正确的是()A.HAVING子句必须与GROUPBY子句配合使用,不能单独使用B.GROUPBY子句可以用于筛选符合条件的行C.WHERE子句中可以使用聚合函数,HAVING子句中不可以D.执行顺序为:WHERE→HAVING→GROUPBY15.下列关于数据库视图的说法,正确的是()A.视图存储了查询结果的物理数据,会占用额外的存储空间B.视图可以提高数据的安全性,隐藏敏感字段C.对视图的修改一定会同步到基表D.视图只能基于单张基表创建,不能基于多张基表创建16.下列不属于死锁处理策略的是()A.死锁预防B.死锁避免C.死锁检测与恢复D.死锁忽略17.数据库系统的三级模式结构中,描述数据库中全体数据的全局逻辑结构和特征的是()A.外模式B.模式C.内模式D.用户模式18.下列关于关系型数据库与NoSQL数据库的对比,说法错误的是()A.关系型数据库支持ACID特性,NoSQL数据库一般不支持完整ACID特性B.关系型数据库支持复杂的关联查询,NoSQL数据库关联查询能力较弱C.关系型数据库的扩展性优于NoSQL数据库D.NoSQL数据库适用于海量非结构化数据存储场景19.下列不属于数据字典存储内容的是()A.表结构定义B.用户权限信息C.业务数据D.索引定义20.数据库设计的下列阶段中,负责设计E-R模型的是()A.需求分析阶段B.概念结构设计阶段C.逻辑结构设计阶段D.物理结构设计阶段第二部分操作题(共3大题,共60分)请在指定的数据库环境中完成以下操作,所有操作结果均需保存在数据库中,未按要求保存不得分。【操作题背景说明】现有教学管理数据库student_db,包含三张核心基表,表结构定义如下:1.学生表student:字段名数据类型约束说明s_idchar(10)主键,学号,前4位为入学年份s_namevarchar(20)非空,学生姓名s_genderchar(2)检查约束:取值为'男'或'女's_birthdate出生日期s_deptvarchar(30)所属学院名称字段名数据类型约束说明c_idchar(6)主键,课程号c_namevarchar(50)非空,课程名称credittinyint检查约束:取值范围1-6teachervarchar(20)授课教师姓名字段名数据类型约束说明s_idchar(10)联合主键成员,外键参照student.s_idc_idchar(6)联合主键成员,外键参照course.c_idscoretinyint检查约束:取值范围0-100,允许为空1.完成以下表结构修改和数据维护操作:(1)为student表新增字段s_phonechar(11),要求添加唯一约束,允许为空;(2)为course表的c_name字段创建唯一非聚集索引idx_cname;(3)删除sc表中所有score字段为空的记录。2.完成以下基础查询操作:(1)统计每个学院的学生总人数,输出列别名依次为dept_name、stu_count,查询结果按stu_count降序排列;(2)查询学分大于等于3的课程名称和授课教师,结果按课程名称升序排列。3.完成以下视图和权限操作:(1)创建视图v_stu_score,内容为所有有考试成绩的学生姓名、课程名称、成绩,隐藏学号、课程号等敏感字段;(2)为普通用户user1授予该视图的查询权限,禁止该用户将该权限转授给其他用户。二、简单应用题(共2小题,每小题12分,共24分)1.根据需求编写对应的SQL语句:(1)查询2022级(s_id前4位为'2022')未参加任何课程考试(即sc表中无对应s_id记录)的学生姓名和所属学院;(2)查询每门课程的及格率(及格线为60分),输出列别名依次为c_id、c_name、pass_rate,及格率保留2位小数,无学生选考的课程及格率显示为0;(3)查询同时选修了“数据结构”和“数据库原理”两门课程的学生姓名,结果无重复记录。2.编写存储过程proc_update_score实现成绩修改功能,要求如下:(1)输入参数:@p_s_idchar(10)(学生学号)、@p_c_idchar(6)(课程号)、@p_new_scoretinyint(新成绩);(2)逻辑规则:首先判断该学生该课程的原有成绩是否存在,若不存在则返回错误码-1;若新成绩不在0-100范围内,返回错误码-2;若更新成功则返回错误码0;(3)附加要求:成绩更新成功后,自动向成绩变更日志表score_change_log插入一条变更记录,该表结构为:score_change_log(log_idintauto_incrementprimarykey,s_idchar(10),c_idchar(6),old_scoretinyint,new_scoretinyint,change_timedatetimedefaultnow())。三、综合应用题(共1小题,共18分)高校选课系统优化需求如下,请完成相关设计与开发工作:1.概念结构设计与转换(5分):现有新增实体“选课规则”,属性包括规则ID、允许选课的学分上限、生效时间、失效时间,该规则与“学院”实体为1对1关联(每个学院对应唯一的选课规则,每条选课规则仅适用于一个学院)。请用文字描述该部分E-R图的核心要素,并将其转换为满足3NF的关系模式,标注各关系模式的主键和外键。2.SQL优化(6分):现有查询语句:SELECTs.s_name,c.c_name,sc.scoreFROMstudents,coursec,scscWHEREs.s_id=sc.s_idANDc.c_id=sc.c_idANDs.s_dept='计算机学院'ANDsc.score>90;请给出至少3条优化建议,并分别说明优化理由。3.程序开发(7分):使用Python的pymysql库编写批量导入选课成绩程序,要求:(1)读取当前目录下的sc_import.csv文件,文件每行字段为s_id、c_id、score,字段间用逗号分隔;(2)校验每条数据的合法性:学号不存在为非法、课程号不存在为非法、成绩不在0-100范围为非法,非法数据写入error_import.log文件,每条错误记录标注错误原因;(3)导入过程开启事务,若出现异常则全部回滚,导入完成后输出成功插入条数和失败条数。【参考答案及评分标准】第一部分选择题1.答案:B解析:数据库系统(DBS)由数据库、数据库管理系统(DBMS)、应用程序、数据库管理员构成,其中DBMS是核心,负责数据的存储、管理、查询优化、安全控制等核心功能。A是运维主体,C是数据载体,D是上层应用,均不属于核心组成部分。2.答案:A解析:E-R模型转换为关系模型时,1对1联系可并入任意一端实体关系模式,1对多联系可并入多端实体关系模式,多对多联系必须单独建立关系模式,属性包含两端实体的主键和联系自身属性,两端主键联合作为该联系关系模式的主键。3.答案:C解析:并、交、差属于集合运算,要求两个关系的属性个数相同、对应属性域兼容。自然连接要求存在公共属性,笛卡尔积对关系结构无要求,投影是单目运算,仅作用于单个关系。4.答案:B解析:COUNT(*)统计符合条件的总记录数,包含NULL值记录;COUNT(字段名)统计该字段非空的记录数,因此本题中COUNT(*)返回100,COUNT(comm)返回80。5.答案:D解析:事务ACID特性中,原子性指事务是不可分割的工作单元,要么全部执行要么全部不执行;一致性指事务执行前后数据库的完整性约束不被破坏;隔离性指多个事务并发执行时互不干扰;持久性指事务提交后修改永久生效。6.答案:C解析:索引可提升查询效率,但索引过多会增加数据插入、更新、删除时的索引维护开销,且对于低基数列(如性别字段)创建索引反而会降低查询效率,并非索引越多查询效率越高。7.答案:B解析:该关系模式所有属性不可再分,满足1NF;所有非主属性完全依赖于主键(学号),无部分函数依赖,满足2NF;但存在非主属性(系名、系主任)对主键的传递函数依赖(学号→系号→系名),因此不满足3NF,最高满足2NF。8.答案:D解析:存储过程将SQL逻辑封装在数据库端,调用时仅传输参数和返回结果,可减少网络传输;预编译后无需重复解析,提高执行效率;可被多个应用调用,实现逻辑复用;但存储过程本身不会自动防范SQL注入,若内部存在动态SQL拼接用户输入仍存在注入风险。9.答案:D解析:常见触发器触发时机包括BEFOREINSERT/UPDATE/DELETE、AFTERINSERT/UPDATE/DELETE、INSTEADOFINSERT/UPDATE/DELETE,ROLLBACK是事务回滚操作,不属于触发器触发时机。10.答案:B解析:完全备份备份全部数据;差异备份备份上次完全备份后变化的所有数据;增量备份备份上次备份(任意类型)后变化的所有数据;冷备份是数据库关闭状态下的备份,属于按备份状态分类的类型。11.答案:C解析:pymysql库中,connect()用于创建数据库连接,cursor()用于创建游标对象,execute()用于执行SQL语句,commit()用于提交事务。12.答案:D解析:SQL注入是攻击者通过构造恶意输入拼接SQL语句实现非法操作,预编译、转义特殊字符、最小权限分配均为有效防范措施,分页处理仅用于拆分查询结果,与防范SQL注入无关。13.答案:B解析:实体完整性要求主键非空且唯一;参照完整性要求外键取值要么为空要么等于被参照关系主键的有效值;用户定义完整性是用户根据业务需求自定义的约束,如性别取值范围。14.答案:A解析:HAVING子句用于筛选分组后的结果,必须配合GROUPBY使用;GROUPBY用于对数据分组,不具备行筛选功能;WHERE子句用于筛选行,不能使用聚合函数,HAVING子句可以使用聚合函数;执行顺序为WHERE→GROUPBY→HAVING。15.答案:B解析:视图是虚拟表,仅存储查询逻辑,不存储物理数据;可通过视图仅开放允许访问的字段,隐藏敏感信息,提升数据安全性;若视图的修改违反基表约束则无法同步到基表;视图可基于多张基表创建。16.答案:D解析:死锁处理策略包括死锁预防(破坏死锁产生的四个必要条件之一)、死锁避免(银行家算法)、死锁检测与恢复(检测到死锁后撤销事务),不存在死锁忽略的通用处理策略。17.答案:B解析:三级模式中,外模式(用户模式)描述用户可见的局部数据逻辑结构;模式(概念模式)描述全体数据的全局逻辑结构;内模式(存储模式)描述数据的物理存储结构。18.答案:C解析:NoSQL数据库采用分布式架构,支持水平扩展,扩展性优于关系型数据库;关系型数据库基于单机架构,水平扩展难度较高。19.答案:C解析:数据字典存储数据库的元数据,包括表结构、索引、权限、存储过程定义等,不存储业务数据。20.答案:B解析:需求分析阶段输出需求规格说明书;概念结构设计阶段设计E-R模型;逻辑结构设计阶段将E-R模型转换为关系模式;物理结构设计阶段设计存储结构和存取路径。第二部分操作题一、基本操作题1.参考SQL:-(1)新增s_phone字段ALTERTABLEstudentADDCOLUMNs_phoneCHAR(11)UNIQUE;-(2)创建唯一索引CREATEUNIQUEINDEXidx_cnameONcourse(c_name);-(3)删除空成绩记录DELETEFROMscWHEREscoreISNULL;评分标准:每步2分,共6分,未使用ISNULL判断空值不得分,索引命名错误扣1分。2.参考SQL:-(1)统计学院人数SELECTs_deptASdept_name,COUNT(*)ASstu_countFROMstudentGROUPBYs_deptORDERBYstu_countDESC;-(2)查询高学分课程SELECTc_name,teacherFROMcourseWHEREcredit>=3ORDERBYc_nameASC;评分标准:每步3分,共6分,别名错误扣1分,排序规则错误扣1分。3.参考SQL:-(1)创建视图CREATEVIEWv_stu_scoreASSELECTs.s_name,c.c_name,sc.scoreFROMstudentsJOINscONs.s_id=sc.s_idJOINcoursecONsc.c_id=c.c_idWHEREsc.scoreISNOTNULL;-(2)授权GRANTSELECTONv_stu_scoreTO'user1'@'%';评分标准:每步3分,共6分,视图未关联三张表扣2分,授权添加WITHGRANTOPTION扣2分。二、简单应用题1.参考SQL:-(1)查询未参加考试的2022级学生SELECTs_name,s_deptFROMstudentWHERELEFT(s_id,4)='2022'ANDs_idNOTIN(SELECTDISTINCTs_idFROMsc);-(2)查询课程及格率SELECTc.c_id,c.c_name,ROUND(IFNULL(COUNT(CASEWHENsc.score>=60THEN1END)/COUNT(sc.s_id)*100,0),2)ASpass_rateFROMcoursecLEFTJOINscONc.c_id=sc.c_idGROUPBYc.c_id,c.c_name;-(3)查询同时选修两门课程的学生SELECTDISTINCTs.s_nameFROMstudentsJOINscsc1ONs.s_id=sc1.s_idJOINcoursec1ONsc1.c_id=c1.c_idANDc1.c_name='数据结构'JOINscsc2ONs.s_id=sc2.s_idJOINcoursec2ONsc2.c_id=c2.c_idANDc2.c_name='数据库原理';评分标准:每步4分,共12分,未使用LEFTJOIN导致无选课课程未显示扣2分,结果未去重扣1分。2.参考SQL(MySQL语法):DELIMITER//CREATEPROCEDUREproc_update_score(INp_s_idCHAR(10),INp_c_idCHAR(6),INp_new_scoreTINYINT,OUTp_err_codeINT)BEGINDECLAREold_score_valTINYINT;-查询原有成绩SELECTscoreINTOold_score_valFROMscWHEREs_id=p_s_idANDc_id=p_c_idFORUPDATE;IFold_score_valISNULLTHENSETp_err_code=-1;ELSEIFp_new_score<0ORp_new_score>100THENSETp_err_code=-2;ELSEUPDATEscSETscore=p_new_scoreWHEREs_id=p_s_idANDc_id=p_c_id;INSERTINTOscore_change_log(s_id,c_id,old_score,new_score)VALUES(p_s_id,p_c_id,old_score_val,p_new_score);SETp_err_code=0;ENDIF;END//DELIMITER;评分标准:参数定义正确3分,逻辑判断正确5分,日志插入正确2分,添加行锁避免并发冲突正确2分,共12分。三、综合应用题1.参考设计:(1)E-R图核心要素:包含两个实体:学院(属性:学院ID、学院名称)、选课规则(属性:规则ID、学分上限、生效时间、失效时间);两个实体间存在1对1联系“适用”,无额外属性。(2)关系模式:学院(学院ID,学院名称),主键:学院ID选课规则(规则ID,学院ID,学分上限,生效时间,失效时间),主键:规则ID,外键:学院ID参照学院.学院ID该关系模式无部分函数依赖和传递函数依赖,满足3NF。评分标准:E-R描述正确2分,关系模式正确2分,主键外键标注正确1分,共5分。2.参考优化建议:(1)将隐式内连接改为显式INNERJOIN语法,提升可读性的同时,数据库优化器可更早确定连接顺序,减少逻辑判断开销,提升查询效率。(2)为student表的s_dept字段创建普通索引,为sc表的score字段创建普通索引,避免全表扫描,直接通过索引定位符合条件的记录,大幅提升筛选效率。(3)提前过滤数据:将s_dept='计算机学院'、sc.score>90的筛选条件下推到对应表的子查询中,先缩小单表数据集再进行连接操作,减少连接时的数据集大小,降低IO开销。评分标准:每条建议2分,理由合理即可,共6分。3.参考Python代码:importpymysqlimportcsvif__name__=='__main__':conn=pymysql.connect(host='localhost',user='root',password='yourpass',database='student_db',charset='utf8mb4')cursor=conn.cursor()success_count=0fail_count=0log_file=open('e

温馨提示

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

评论

0/150

提交评论