版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年计算机二级mysql考试试题及答案一、选择题(共40题,每题1分,共40分)(一)公共基础知识部分(共10题)1.下列关于算法时间复杂度的描述,正确的是()A.时间复杂度是指算法执行过程中所需要的基本运算次数B.时间复杂度是指算法执行的具体时间C.时间复杂度与算法所处理的数据量无关D.算法的时间复杂度越低,空间复杂度也越低【答案】A【解析】算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需的基本运算次数,与具体执行时间、硬件环境无关,与数据规模正相关;时间复杂度和空间复杂度没有必然的负相关关系,因此A正确,BCD错误。2.下列数据结构中,属于非线性结构的是()A.循环队列B.链式栈C.二叉树D.线性链表【答案】C【解析】线性结构的特点是除了首节点和尾节点外,每个节点只有一个前驱和一个后继,循环队列、链式栈、线性链表均属于线性结构;二叉树每个节点最多有两个子节点,属于非线性结构,因此C正确。3.软件生命周期中,花费时间最多的阶段是()A.需求分析阶段B.软件设计阶段C.软件测试阶段D.运行维护阶段【答案】D【解析】软件生命周期包括可行性分析、需求分析、软件设计、编码实现、软件测试、运行维护6个阶段,其中运行维护阶段持续时间最长,花费成本占整个软件生命周期的70%以上,因此D正确。4.下列属于结构化设计常用工具的是()A.类图B.程序流程图C.用例图D.E-R图【答案】B【解析】结构化设计常用工具包括程序流程图、N-S盒图、PAD图、判定表等;类图、用例图属于面向对象设计工具,E-R图属于数据库概念设计工具,因此B正确。5.下列关于软件测试的描述,正确的是()A.软件测试的目的是发现程序中的所有错误B.白盒测试需要了解程序的内部逻辑和执行路径C.单元测试是在软件交付用户使用前进行的测试D.黑盒测试也称为结构测试【答案】B【解析】软件测试的目的是尽可能多的发现程序中的错误,无法保证发现所有错误,A错误;白盒测试需要基于程序内部逻辑设计测试用例,也称为结构测试,B正确;单元测试是在编码阶段针对单个模块进行的测试,验收测试是交付用户前进行的测试,C错误;黑盒测试不需要了解内部逻辑,基于功能需求设计用例,也称为功能测试,D错误。6.数据库系统的三级模式结构中,描述数据库全局逻辑结构的是()A.外模式B.内模式C.模式D.子模式【答案】C【解析】三级模式中,模式(也称为概念模式)描述数据库的全局逻辑结构;外模式(也称为子模式)描述用户可见的局部数据逻辑结构;内模式描述数据的物理存储结构,因此C正确。7.在E-R图中,用来表示实体之间联系的图形是()A.矩形B.椭圆形C.菱形D.平行四边形【答案】C【解析】E-R图中,矩形表示实体,椭圆形表示属性,菱形表示实体之间的联系,因此C正确。8.下列关系代数运算中,属于专门的关系运算的是()A.并运算B.交运算C.笛卡尔积D.投影运算【答案】D【解析】关系代数运算分为传统的集合运算(并、交、差、笛卡尔积)和专门的关系运算(选择、投影、连接、除),因此D正确。9.若关系模式R的所有属性都不可再分,且每个非主属性都完全依赖于主键,则R至少满足()A.1NFB.2NFC.3NFD.BCNF【答案】B【解析】1NF要求所有属性不可再分;2NF在1NF基础上要求非主属性完全依赖于主键,不存在部分依赖;3NF在2NF基础上要求非主属性不存在传递依赖于主键,因此B正确。10.下列数据模型中,属于逻辑数据模型的是()A.层次模型B.概念模型C.物理模型D.E-R模型【答案】A【解析】数据模型分为概念模型(如E-R模型)、逻辑模型(如层次模型、网状模型、关系模型、面向对象模型)、物理模型三层,因此A正确。(二)MySQL专项部分(共30题)11.MySQL8.0默认的存储引擎是()A.MyISAMB.InnoDBC.MEMORYD.CSV【答案】B【解析】MySQL5.5及之后版本默认存储引擎为InnoDB,支持事务、外键、行级锁、崩溃恢复,是生产环境首选存储引擎,因此B正确。12.MySQL服务默认监听的端口号是()A.8080B.3306C.5432D.1521【答案】B【解析】MySQL默认端口为3306,8080是Tomcat默认端口,5432是PostgreSQL默认端口,1521是Oracle默认端口,因此B正确。13.下列关于数据库创建的语法,正确的是()A.CREATEDATABASEstuDEFAULTCHARSETutf8B.CREATEDATABASEIFNOTEXISTSstuDEFAULTCHARSETutf8mb4C.CREATEDATABASEstuIFNOTEXISTSDEFAULTCHARSETgbkD.NEWDATABASEstuDEFAULTCHARSETutf8mb4【答案】B【解析】创建数据库的语法为CREATEDATABASE[IFNOTEXISTS]数据库名[DEFAULTCHARSET字符集][DEFAULTCOLLATE排序规则];IFNOTEXISTS避免数据库已存在时报错,utf8mb4是MySQL8.0推荐的字符集,支持全量Unicode字符,因此B正确。14.删除数据库的正确语法是()A.DROPDATABASEIFEXISTSstuB.DELETEDATABASEstuC.REMOVEDATABASEstuD.TRUNCATEDATABASEstu【答案】A【解析】删除数据库使用DROPDATABASE语句,IFNOTEXISTS避免数据库不存在时报错;DELETE用于删除表中的数据,TRUNCATE用于清空表中的数据,因此A正确。15.下列关于MySQL数据类型的描述,正确的是()A.CHAR类型的长度是固定的,VARCHAR类型的长度是可变的B.DATETIME类型占4字节,TIMESTAMP类型占8字节C.TINYINT类型的取值范围是-128到127,无符号时是0到256D.TEXT类型可以设置默认值【答案】A【解析】CHAR(n)固定占用n个字符的存储空间,不足时自动填充空格,VARCHAR(n)根据实际存储的字符长度占用空间,因此A正确;DATETIME占8字节,TIMESTAMP占4字节,B错误;无符号TINYINT取值范围是0到255,C错误;TEXT、BLOB类型不允许设置默认值,D错误。16.下列约束中,能够保证字段值唯一且不允许为NULL的是()A.UNIQUEB.PRIMARYKEYC.CHECKD.DEFAULT【答案】B【解析】PRIMARYKEY主键约束天然满足唯一、非空两个特性;UNIQUE约束允许字段值为NULL,且可以有多个NULL值;CHECK约束用于限制字段的取值范围;DEFAULT用于设置字段的默认值,因此B正确。17.为student表的s_id字段添加主键约束的语法,正确的是()A.ALTERTABLEstudentADDPRIMARYKEY(s_id)B.ALTERTABLEstudentADDCONSTRAINTpk_sidUNIQUE(s_id)C.MODIFYTABLEstudentADDPRIMARYKEY(s_id)D.ALTERTABLEstudentSETPRIMARYKEY(s_id)【答案】A【解析】修改表添加主键约束的语法为ALTERTABLE表名ADDPRIMARYKEY(字段名),因此A正确。18.下列查询语句的执行顺序,正确的是()A.FROM→WHERE→GROUPBY→HAVING→SELECT→ORDERBYB.FROM→GROUPBY→WHERE→HAVING→SELECT→ORDERBYC.SELECT→FROM→WHERE→GROUPBY→HAVING→ORDERBYD.FROM→WHERE→SELECT→GROUPBY→HAVING→ORDERBY【答案】A【解析】MySQL查询语句的执行顺序为:FROM/JOIN→ON→WHERE→GROUPBY→聚合函数→HAVING→SELECT→DISTINCT→ORDERBY→LIMIT,因此A正确。19.若要查询student表中s_name字段包含“张”字的所有记录,下列WHERE条件正确的是()A.WHEREs_name='%张%'B.WHEREs_nameLIKE'%张%'C.WHEREs_nameLIKE'_张_'D.WHEREs_nameCONTAINS'张'【答案】B【解析】模糊查询使用LIKE关键字,%通配符匹配任意长度的任意字符,_通配符匹配单个任意字符;要查询包含“张”的记录,应使用'%张%',因此B正确。20.下列关于聚合函数的描述,错误的是()A.COUNT(*)统计符合条件的记录行数,忽略NULL值B.AVG()函数用于计算数值类型字段的平均值,自动忽略NULL值C.MAX()函数可以用于字符串类型字段的比较D.SUM()函数统计字段的总和,NULL值不会参与计算【答案】A【解析】COUNT(*)统计所有符合条件的行数,不会忽略任何行,包括包含NULL值的行;COUNT(字段名)才会忽略该字段为NULL的行,因此A描述错误,其余选项均正确。21.若要查询sc表中每个学生的总成绩,下列语法正确的是()A.SELECTs_id,SUM(score)FROMscGROUPBYs_idB.SELECTs_id,SUM(score)FROMscORDERBYs_idC.SELECTs_id,AVG(score)FROMscGROUPBYs_idD.SELECTs_id,SUM(score)FROMscGROUPBYscore【答案】A【解析】按学生统计总成绩需要按s_id字段分组,使用SUM(score)计算每个分组的成绩总和,因此A正确。22.下列关于连接查询的描述,正确的是()A.内连接只会返回两个表中匹配条件的记录B.左外连接只会返回左表中匹配条件的记录C.右外连接只会返回右表中匹配条件的记录D.MySQL原生支持全外连接【答案】A【解析】内连接返回两个表中满足连接条件的记录;左外连接返回左表的所有记录,右表匹配不到的字段显示为NULL;右外连接返回右表的所有记录,左表匹配不到的字段显示为NULL;MySQL不支持原生全外连接,需要通过UNION联合左外连接和右外连接实现,因此A正确。23.下列关于子查询关键字EXISTS的描述,正确的是()A.EXISTS子查询返回的是符合条件的字段值集合B.EXISTS子查询的执行效率一定低于IN子查询C.EXISTS子查询判断子查询是否有返回结果,返回布尔值D.EXISTS子查询不支持相关子查询【答案】C【解析】EXISTS子查询不返回具体数据,只判断子查询是否有返回结果,有则返回TRUE,否则返回FALSE;当外表数据量小于内表时,IN效率更高,当内表数据量小于外表时,EXISTS效率更高;EXISTS支持相关子查询,因此C正确。24.下列关于索引的描述,错误的是()A.索引可以加快查询效率,因此索引越多越好B.主键索引属于唯一索引的一种C.联合索引遵循最左前缀匹配原则D.全文索引适用于长文本的模糊查询【答案】A【解析】索引可以加快查询效率,但会降低插入、更新、删除的效率,且占用额外的存储空间,因此索引不是越多越好,需要根据业务场景合理创建,因此A描述错误,其余选项均正确。25.创建普通索引idx_dept为student表的s_dept字段,下列语法正确的是()A.CREATEINDEXidx_deptONstudent(s_dept)B.CREATEUNIQUEINDEXidx_deptONstudent(s_dept)C.ADDINDEXidx_deptstudent(s_dept)D.ALTERTABLEstudentADDINDEXidx_dept(s_dept)E.以上A和D都正确【答案】E【解析】创建索引有两种语法:CREATEINDEX索引名ON表名(字段名),或者ALTERTABLE表名ADDINDEX索引名(字段名),因此A和D都正确,选E。26.下列关于视图的描述,错误的是()A.视图是虚拟表,本身不存储数据B.视图可以基于多张基本表创建C.所有视图都支持更新操作D.视图可以屏蔽底层表结构的变化,提升数据安全性【答案】C【解析】包含聚合函数、分组、DISTINCT、多表连接等的视图不支持更新操作,因此C描述错误,其余选项均正确。27.下列关于存储过程和函数的区别,描述正确的是()A.存储过程可以有多个返回值,函数只能有一个返回值B.函数可以在SQL语句中直接调用,存储过程不可以C.存储过程可以使用OUT参数返回数据,函数不可以D.以上都正确【答案】D【解析】存储过程可以通过OUT/INOUT参数返回多个值,只能通过CALL关键字调用;函数有且仅有一个返回值,可以在SELECT等SQL语句中直接调用,因此三个选项描述都正确,选D。28.触发器的触发事件不包括()A.INSERTB.UPDATEC.DELETED.SELECT【答案】D【解析】触发器的触发事件只有INSERT、UPDATE、DELETE三种,SELECT操作不会触发触发器,因此D正确。29.下列不属于事务ACID特性的是()A.原子性B.隔离性C.一致性D.可共享性【答案】D【解析】事务的ACID特性分别是原子性、一致性、隔离性、持久性,可共享性不属于ACID特性,因此D正确。30.MySQLInnoDB存储引擎默认的事务隔离级别是()A.读未提交B.读已提交C.可重复读D.串行化【答案】C【解析】SQL标准的事务隔离级别有读未提交、读已提交、可重复读、串行化四种,InnoDB默认隔离级别为可重复读,通过MVCC机制解决了幻读问题,因此C正确。31.下列关于锁的描述,正确的是()A.行级锁的锁定粒度小,并发性能高B.表级锁的锁定粒度大,发生锁冲突的概率低C.乐观锁需要通过数据库的锁机制实现D.悲观锁不会出现死锁问题【答案】A【解析】行级锁锁定粒度小,并发性能高,锁冲突概率低;表级锁锁定粒度大,并发性能低,锁冲突概率高;乐观锁通过版本号、时间戳等机制实现,不需要依赖数据库锁;悲观锁可能出现死锁问题,因此A正确。32.创建用户'teacher'@'localhost',密码为'Teacher@123',下列语法正确的是()A.CREATEUSER'teacher'@'localhost'IDENTIFIEDBY'Teacher@123'B.NEWUSER'teacher'@'localhost'PASSWORD'Teacher@123'C.GRANTUSER'teacher'@'localhost'IDENTIFIEDBY'Teacher@123'D.ALTERUSER'teacher'@'localhost'IDENTIFIEDBY'Teacher@123'【答案】A【解析】创建用户的语法为CREATEUSER'用户名'@'主机名'IDENTIFIEDBY'密码',因此A正确。33.授予用户'teacher'@'localhost'查询stu_course库中student表的权限,下列语法正确的是()A.GRANTSELECTONstu_course.studentTO'teacher'@'localhost'B.GRANTSELECTstudentTO'teacher'@'localhost'C.GRANTQUERYONstu_course.studentTO'teacher'@'localhost'D.GRANTSELECTON*.*TO'teacher'@'localhost'【答案】A【解析】授权语法为GRANT权限列表ON库名.表名TO'用户名'@'主机名',查询权限为SELECT,因此A正确。34.下列属于逻辑备份工具的是()A.mysqldumpB.复制表空间文件C.xtrabackupD.直接拷贝数据目录【答案】A【解析】mysqldump是MySQL自带的逻辑备份工具,导出为SQL脚本,其余选项均属于物理备份,因此A正确。35.若要查询当前时间,下列函数使用正确的是()A.NOW()B.CURDATE()C.CURTIME()D.DATE()【答案】A【解析】NOW()返回当前日期和时间,CURDATE()返回当前日期,CURTIME()返回当前时间,DATE()提取日期类型的日期部分,因此A正确。36.若要将s_name字段的NULL值替换为'匿名',下列函数使用正确的是()A.IF(s_name,NULL,'匿名')B.IFNULL(s_name,'匿名')C.NULLIF(s_name,'匿名')D.CASEWHENs_nameISNULLTHEN'匿名'END【答案】B【解析】IFNULL(表达式1,表达式2)的功能是如果表达式1为NULL则返回表达式2,否则返回表达式1,符合需求,因此B正确。37.下列关于LIMIT子句的描述,正确的是()A.LIMIT5,10表示从第5条记录开始,返回10条记录B.LIMIT5,10表示返回前5条记录,跳过10条C.LIMIT10OFFSET5表示从第5条记录开始,返回10条记录D.以上A和C都正确【答案】D【解析】LIMIT语法有两种:LIMIT偏移量,数量,以及LIMIT数量OFFSET偏移量,偏移量从0开始计数,因此LIMIT5,10和LIMIT10OFFSET5都表示跳过前5条记录,返回后续10条,因此D正确。38.下列关于InnoDB和MyISAM存储引擎的描述,错误的是()A.InnoDB支持事务,MyISAM不支持事务B.InnoDB支持外键约束,MyISAM不支持外键约束C.InnoDB支持表级锁,MyISAM支持行级锁D.InnoDB支持崩溃恢复,MyISAM不支持崩溃恢复【答案】C【解析】InnoDB支持行级锁(默认)、表级锁,并发性能更高;MyISAM只支持表级锁,并发性能低,因此C选项描述错误,其余选项均正确。39.若要删除student表中的所有记录,且不需要回滚,下列效率最高的语法是()A.DELETEFROMstudentB.DROPTABLEstudentC.TRUNCATETABLEstudentD.REMOVEFROMstudent【答案】C【解析】TRUNCATETABLE一次性清空表中所有数据,不记录事务日志,执行效率远高于DELETE,且不会删除表结构;DROPTABLE会删除表结构,因此C正确。40.下列关于MySQL8.0新特性的描述,错误的是()A.原生支持CHECK约束B.支持窗口函数C.支持原子DDL操作D.取消了InnoDB存储引擎【答案】D【解析】MySQL8.0没有取消InnoDB存储引擎,反而优化了InnoDB的性能,因此D描述错误,其余选项均为MySQL8.0的新特性。二、操作题(共3大题,每题20分,共60分)说明:本次操作题基于学生选课管理系统数据库stu_course,涉及3张核心表,表结构如下:1.学生表student:字段包括s_id(char(10),主键,学号)、s_name(varchar(20),非空,姓名)、s_gender(char(2),取值为'男'/'女',性别)、s_age(tinyint,取值16-30,年龄)、s_dept(varchar(30),所属院系)、total_credit(tinyint,默认值0,总学分)2.课程表course:字段包括c_id(char(6),主键,课程号)、c_name(varchar(30),非空,课程名)、c_credit(tinyint,取值1-6,学分)3.成绩表sc:字段包括s_id(char(10),外键关联student.s_id)、c_id(char(6),外键关联course.c_id)、score(tinyint,取值0-100,成绩),主键为(s_id,c_id)所有表默认存储引擎为InnoDB,字符集为utf8mb4,排序规则为utf8mb4_0900_ai_ci。(一)基本操作题(20分)1.请创建数据库stu_course,指定字符集为utf8mb4,排序规则为utf8mb4_0900_ai_ci。【参考答案】CREATEDATABASEIFNOTEXISTSstu_courseDEFAULTCHARACTERSETutf8mb4DEFAULTCOLLATEutf8mb4_0900_ai_ci;【解析】IFNOTEXISTS避免数据库已存在时报错,DEFAULTCHARACTERSET指定默认字符集,utf8mb4支持全量Unicode字符(包括emoji),是MySQL8.0推荐的默认字符集;COLLATE指定排序规则,utf8mb4_0900_ai_ci表示基于Unicode9.0标准,大小写不敏感、重音不敏感。2.请根据上述表结构说明,创建sc表,要求包含所有约束条件。【参考答案】CREATETABLEIFNOTEXISTSsc(s_idCHAR(10)COMMENT'学号',c_idCHAR(6)COMMENT'课程号',scoreTINYINTCHECK(scoreBETWEEN0AND100)COMMENT'成绩',PRIMARYKEY(s_id,c_id),FOREIGNKEY(s_id)REFERENCESstudent(s_id)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(c_id)REFERENCEScourse(c_id)ONDELETECASCADEONUPDATECASCADE)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COMMENT'成绩表';【解析】sc表的主键为联合主键(s_id,c_id),保证同一学生不能重复选修同一门课程;FOREIGNKEY指定外键约束,ONDELETECASCADE表示关联的学生/课程删除时,自动删除对应的成绩记录,ONUPDATECASCADE表示关联的学号/课程号更新时,自动更新成绩表的对应字段。3.请为student表添加s_phone字段,类型为char(11),要求值唯一,允许为NULL。【参考答案】ALTERTABLEstudentADDCOLUMNs_phoneCHAR(11)UNIQUECOMMENT'手机号';【解析】ALTERTABLEADDCOLUMN用于添加表字段,UNIQUE约束保证手机号唯一,允许为NULL,且多个NULL值不会违反唯一约束。4.请为sc表的score字段设置默认值为0。【参考答案】ALTERTABLEscALTERCOLUMNscoreSETDEFAULT0;【解析】ALTERTABLEALTERCOLUMNSETDEFAULT用于修改字段的默认值,插入成绩记录时如果未指定score,默认赋值为0。5.请为student表的s_dept字段创建普通索引idx_dept,提升按院系查询的效率。【参考答案】CREATEINDEXidx_deptONstudent(s_dept);【解析】普通索引没有唯一约束,用于加速对应字段的查询效率,适合重复值较多的字段。6.请删除course表中名为c_teacher的冗余字段。【参考答案】ALTERTABLEcourseDROPCOLUMNc_teacher;【解析】ALTERTABLEDROPCOLUMN用于删除表中的指定字段,删除操作不可逆,执行前需要确认字段无业务使用。(二)简单应用题(20分)1.请查询计算机学院所有男学生的学号、姓名和年龄,结果按年龄升序排序,年龄相同的按学号降序排序。【参考答案】SELECTs_id,s_name,s_ageFROMstudentWHEREs_dept='计算机学院'ANDs_gender='男'ORDERBYs_ageASC,s_idDESC;【解析】WHERE子句筛选符合条件的记录,ORDERBY子句指定排序规则,ASC表示升序(默认值可省略),DESC表示降序,多字段排序时先按第一个字段排序,第一个字段值相同时按第二个字段排序。2.请查询选修了课程号为'C002'的学生的姓名、成绩,要求成绩为空的显示为'缺考',结果按成绩降序排序。【参考答案】SELECTs.s_name,IFNULL(sc.score,'缺考')ASscoreFROMstudentsJOINscONs.s_id=sc.s_idWHEREsc.c_id='C002'ORDERBYsc.scoreDESC;【解析】内连接保证查询结果只包含选修了C002课程的学生;IFNULL函数判断第一个参数是否为NULL,是则返回第二个参数,否则返回第一个参数,实现缺考的替换显示。3.请统计每门课程的课程名、选修人数、平均成绩,要求平均成绩保留两位小数,筛选平均成绩大于70分的课程,按平均成绩降序排序。【参考答案】SELECTc.c_name,COUNT(sc.s_id)ASstu_num,ROUND(AVG(sc.score),2)ASavg_scoreFROMcoursecJOINscONc.c_id=sc.c_idGROUPBYc.c_id,c.c_nameHAVINGavg_score>70ORDERBYavg_scoreDESC;【解析】按课程分组统计,GROUPBY子句需要包含SELECT中未聚合的所有字段;COUNT(sc.s_id)统计选修人数,忽略成绩为NULL的记录;ROUND函数保留平均成绩两位小数;HAVING子句筛选分组后的结果,只能在GROUPBY之后使用。4.请查询没有选修任何课程的学生的姓名和所属院系。【参考答案】SELECTs.s_name,s.s_deptFROMstudentsLEFTJOINscONs.s_id=sc.s_idWHEREsc.s_idISNULL;【解析】左外连接返回所有学生的记录,未选修课程的学生在sc表中没有匹配记录,对应sc.s_id为NULL,通过WHERE子句筛选即可得到结果;也可以使用NOTEXISTS子查询实现:SELECTs_name,s_deptFROMstudentsWHERENOTEXISTS(SELECT1FROMscWHEREs_id=s.s_id)。5.请查询姓李的学生的学号、姓名,以及他们选修的课程名和成绩,要求包含未选修课程的学生。【参考答案】SELECTs.s_id,s.s_name,c.c_name,sc.scoreFROMstudentsLEFTJOINscONs.s_id=sc.s_idLEFTJOINcoursecONsc.c_id=c.c_idWHEREs.s_nameLIKE'李%';【解析】两次左外连接保证未选修课程的学生也会出现在结果中,对应课程名和成绩为NULL;LIKE'李%'匹配所有姓李的学生,%通配符匹配任意长度的后续字符。6.请查询选修了3门及以上课程的学生的学号、姓名和选修课程数量,按选修数量降序排序。【参考答案】SELECTs.s_id,s.s_name,COUNT(sc.c_id)AScourse_numFROMstudentsJOINscONs.s_id=sc.s_idGROUPBYs.s_id,s.s_nameHAVINGcourse_num>=3ORDERBYcourse_numDESC;【解析】按学生分组统计选修课程数量,HAVING子句筛选选修数量大于等于3的学生,COUNT(sc.c_id)忽略成绩为NULL的记录,统计实际选修的课程数。(三)综合应用题(20分)1.请创建存储过程proc_get_dept_stat,输入参数为院系名称dept_nameVARCHAR(30),输出参数为stu_countINT、avg_scoreDECIMAL(4,2)、max_scoreTINYINT,功能是统计该院系的学生总数、所有学生的平均成绩、最高成绩。【参考答案】DELIMITER//CREATEPROCEDUREproc_get_dept_stat(INdept_nameVARCHAR(30),OUTstu_countINT,OUTavg_scoreDECIMAL(4,2),OUTmax_scoreTINYINT)BEGIN-统计学生总数SELECTCOUNT(*)INTOstu_countFROMstudentWHEREs_dept=dept_name;-统计成绩数据SELECTROUND(AVG(score),2),MAX(score)INTOavg_score,max_scoreFROMstudentsJOINscONs.s_id=sc.s_idWHEREs.s_dept=dept_name;END//DELIMITER;【解析】DELIMITER修改语句结束符为//,避免存储过程内部的;和默认结束符冲突;IN表示输入参数,OUT表示输出参数;SELECT...INTO语法将查询结果赋值给输出参数;存储过程封装了固定统计逻辑,可重复调用,减少重复代码编写。2.请创建触发器trig_update_credit,当修改sc表的score字段时,如果修改前成绩<60、修改后成绩>=60,自动给对应学生的总学分加上该课程的学分;如果修改前成绩>=60、修改后成绩<60,自动给对应学生的总学分减去该课程的学分。【参考答案】DELIMITER//CREATETRIGGERtrig_update_creditAFTERUPDATEONscFOREACHROWBEGINDECLAREcreditTINYINT;SELECTc_creditINTOcreditFROMcourseWHEREc_id=NEW.c_id;-成绩从不及格变为及格,加学分IFOLD.score<60ANDNEW.score>=60THENUPDATEstudentSETtotal_credit=total_credit+creditWHEREs_id=NEW.s_id;ENDIF;-成绩从及格变为不及格,减学分IFOLD.score>=60ANDNEW.score<60THENUPDATEstudentSETtotal_credit=total_credit-creditWHEREs_id=NEW.s_id;ENDIF;END//DELIMITER;【解析】AFTERUPDATE表示在更新sc表记录之后触发;FOREACHROW表示行级触发器,每更新一行触发一次;OLD指代更新前的记录,NEW指代更新后的记录;DECLARE关键字用于声明触发器内部的局部变量,存储对应课程的学分。3.请创建视图view_pass_score,包含学生学号、姓名、课程名、成绩、学分字段,仅包含成绩>=60分的记录,且禁止通过该视图更新数据。【参考答案】CREATEVIEWview_pass_scoreWITHCHECKOPTIONASSELECTs.s_id,s.s_name,c.c_name,sc.score,c.c_creditFROMstudentsJOINscONs.s_id=sc.s_idJOINcoursecONsc.c_id=c.c_idWHEREsc.score>=60WITHREADONLY;【解析】WITHCHECKOPTION保证通过视图插入/更新的记录必须满足WHERE子句的条件(即成绩>=60);WITHREADONLY设置视图为只读,禁止任何更新操作,提升数据安全性。4.请编写事务实现学生选课功能:输入学号s_id、课程号c_id,首先检
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中七年级地理中国的疆域和人口单元教学设计
- 高中二年级劳动技术《雪冬寻味:香辣脆爽凉拌鸡胗》教学设计
- 小学六年级综合实践活动“我们的记忆习惯”教学设计
- 小学三年级科学磁铁的磁极探究式教学设计
- 2026年濮阳市南乐县三年级数学下学期期中质量检测模拟试题含答案解析
- 图神经网络图生成模型技术协议
- 龙凤煤炭封闭装卸中心建设项目环境影响评价报告表
- 小学课外拓展试题及答案
- 小学三年级科学《雨有多大》教学设计
- 小学四年级科学《蚕的一生》教学设计
- 2026年全国软件水平考试之中级系统集成项目管理工程师考试绝密预测题(详细参考解析)
- 中石油俄语水平考试试题及答案
- 流感预防健康知识
- 替奈普酶治疗急性缺血性卒中共识2026
- 烟花爆竹从业人员安全教育培训计划
- 网络科学导论
- 2025年广东佛山仲裁委员会选聘仲裁员笔试备考题库附答案详解
- 医院后勤服务外包管理规范
- 重庆市2026年普通高等学校招生全国统一考试调研(四)语文试卷
- 光伏项目材料报验模板
- 广西壮族自治区公共资源交易平台系统权益类交易子系统(土地使用权)交易中心用户手册
评论
0/150
提交评论