2025年计算机二级考试MySQL试题及答案_第1页
2025年计算机二级考试MySQL试题及答案_第2页
2025年计算机二级考试MySQL试题及答案_第3页
2025年计算机二级考试MySQL试题及答案_第4页
2025年计算机二级考试MySQL试题及答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

2025年计算机二级考试MySQL试题及答案一、单项选择题1.在MySQL中,用于查看当前所有数据库的命令是?A.SHOWTABLES;B.SHOWDATABASES;C.DISPLAYDATABASES;D.LISTDATABASES;答案:B2.以下哪个数据类型最适合存储精确的货币金额?A.FLOATB.DOUBLEC.DECIMAL(10,2)D.INT答案:C3.关于主键(PRIMARYKEY)约束,以下说法错误的是?A.一个表只能有一个主键。B.主键列的值必须唯一且不能为NULL。C.主键可以由多个列组合构成。D.主键列自动创建唯一索引。答案:A4.执行`DELETEFROMstudentWHEREage>20;`语句后,发现误删了数据,在没有备份且未开启事务的情况下,最有效的恢复方法是?A.使用ROLLBACK语句回滚。B.使用`REPLACEINTO`语句重新插入。C.从数据库的二进制日志(binlog)中恢复。D.无法恢复。答案:C5.以下哪个SQL语句用于修改表结构,为`employees`表增加一个`email`列?A.ALTERTABLEemployeesADDemailVARCHAR(100);B.MODIFYTABLEemployeesADDCOLUMNemailVARCHAR(100);C.UPDATETABLEemployeesADDemailVARCHAR(100);D.INSERTINTOemployees(email)VALUES(‘…’);答案:A6.在MySQL中,`ENUM('男','女')`数据类型属于?A.字符串类型B.数值类型C.日期时间类型D.空间数据类型答案:A7.事务的四大特性(ACID)不包括以下哪一项?A.原子性(Atomicity)B.一致性(Consistency)C.隔离性(Isolation)D.持久性(Durability)E.并发性(Concurrency)答案:E8.以下关于索引的描述,正确的是?A.索引越多,查询速度越快,数据插入和更新速度也越快。B.对`WHERE`子句中频繁使用的列创建索引,能有效提高查询效率。C.主键索引和唯一索引没有区别。D.对`TEXT`或`BLOB`类型的字段建立全文索引使用`FULLTEXT`关键字是错误的。答案:B9.查询`student`表中`class_id`为1或2,且`score`大于90分的学生姓名,正确的SQL是?A.`SELECTnameFROMstudentWHEREclass_id=1ORclass_id=2ANDscore>90;`B.`SELECTnameFROMstudentWHERE(class_id=1ORclass_id=2)ANDscore>90;`C.`SELECTnameFROMstudentWHEREclass_idIN(1,2)ORscore>90;`D.`SELECTnameFROMstudentWHEREclass_id=1,2ANDscore>90;`答案:B10.使用`JOIN`连接`orders`表和`customers`表,查询所有订单及其客户信息(包括没有客户的订单),应使用?A.INNERJOINB.LEFTJOINC.RIGHTJOIND.FULLOUTERJOIN答案:B二、多项选择题11.以下哪些是MySQL的存储引擎?A.InnoDBB.MyISAMC.MEMORYD.ArchiveE.MongoDB答案:A,B,C,D12.关于视图(VIEW),以下说法正确的有?A.视图是一个虚拟表,其内容由查询定义。B.对视图的增删改操作最终会作用到基表上。C.创建视图可以简化复杂的SQL操作,提高数据安全性。D.视图一旦创建,其定义就不能再修改,必须删除后重建。答案:A,B,C13.以下哪些SQL语句属于数据定义语言(DDL)?A.CREATEDATABASEB.SELECTC.ALTERTABLED.DROPINDEXE.INSERTINTO答案:A,C,D14.以下哪些场景适合使用触发器(TRIGGER)?A.在向`orders`表插入一条订单记录后,自动在`audit_log`表中记录一条审计日志。B.确保`employee`表的`salary`字段更新后,其值不能低于更新前的值。C.实现复杂的多表关联查询。D.在删除`department`表中的某个部门前,检查`employee`表中是否还有属于该部门的员工。答案:A,B,D15.以下关于MySQL用户权限管理的描述,正确的有?A.`GRANT`语句用于授予用户权限。B.`REVOKE`语句用于撤销用户权限。C.创建用户的语句是`CREATEUSER‘username’@‘host’IDENTIFIEDBY‘password’;`。D.`%`通配符表示任意主机。答案:A,B,C,D三、填空题16.在MySQL中,用于删除整个数据库及其所有表的命令是`________________________`。答案:DROPDATABASEdatabase_name;17.在`GROUPBY`子句中,用于对分组后的结果进行条件过滤的关键字是`________________`。答案:HAVING18.事务开始的显式命令是`________________`,提交事务的命令是`________________`,回滚事务的命令是`________________`。答案:STARTTRANSACTION或BEGIN,COMMIT,ROLLBACK19.使用`________________`函数可以获取当前系统的日期和时间。答案:NOW()20.在创建表时,使用`________________`关键字可以设置某个字段的值为自动递增,通常用于主键。答案:AUTO_INCREMENT四、简答题(封闭型)21.简述`CHAR`和`VARCHAR`数据类型的区别。答案:主要区别在于存储方式和空间占用。`CHAR`是定长字符串,无论实际内容多长,都会占用定义时指定的固定长度空间,适合存储长度基本固定的数据(如身份证号、手机号),存取速度略快。`VARCHAR`是变长字符串,仅占用实际数据长度+1或2个字节(用于记录长度)的空间,适合存储长度变化较大的数据(如地址、备注),更节省存储空间。22.简述什么是外键约束,以及它的作用。答案:外键约束用于建立两个表数据之间的关联,它定义了一个表(子表)中的一个或多个列必须引用另一个表(父表)的主键或唯一键。其主要作用是维护数据的一致性和参照完整性,防止在子表中插入父表中不存在的关联数据,并可以定义级联操作(如`ONDELETECASCADE`)来保证数据关联的自动维护。23.解释SQL注入攻击的原理,并列举一种防范方法。答案:SQL注入攻击的原理是攻击者通过在Web表单输入、URL参数等用户可输入的地方,插入恶意的SQL代码片段。当应用程序未经验证或过滤就将这些输入拼接到SQL语句中并执行时,恶意代码就会改变原SQL语句的语义,可能导致数据泄露、篡改或删除。防范方法之一(最有效的方法)是使用参数化查询(预编译语句),数据库服务器会将参数值与SQL语句结构分开处理,从而从根本上杜绝注入。24.简述`INNERJOIN`、`LEFTJOIN`和`RIGHTJOIN`的区别。答案:`INNERJOIN`(内连接)返回两个表中连接条件匹配的行。`LEFTJOIN`(左外连接)返回左表的所有行,即使右表中没有匹配的行;如果右表无匹配,则结果集中右表的部分为NULL。`RIGHTJOIN`(右外连接)返回右表的所有行,即使左表中没有匹配的行;如果左表无匹配,则结果集中左表的部分为NULL。在MySQL中,`FULLOUTERJOIN`(全外连接)需通过`LEFTJOIN`和`RIGHTJOIN`的`UNION`来实现。25.什么是数据库的范式?简述第一范式(1NF)的要求。答案:数据库范式是设计关系型数据库时遵循的规范,旨在减少数据冗余,提高数据一致性。第一范式(1NF)是最基本的范式,其要求是:表中的每个列都是不可再分的最小数据单元(原子性),即每一列中都不能包含多个值或数组、集合等。例如,不能有一个“联系方式”列同时存储电话和邮箱,应拆分为“电话”和“邮箱”两列。五、应用题(综合类)26.现有如下两个表结构:`学生表(student)`字段名类型说明stu_idINTPRIMARYKEY学号stu_nameVARCHAR(20)姓名genderCHAR(1)性别(‘M‘/’F‘)birth_dateDATE出生日期class_idINT班级编号(外键)`成绩表(score)`字段名类型说明score_idINTPRIMARYKEY成绩IDstu_idINT学号(外键)course_nameVARCHAR(50)课程名称scoreDECIMAL(5,2)成绩请编写SQL语句完成以下操作:(1)查询每个学生的平均分,并按平均分降序排列,显示学生姓名和平均分。(2)查询所有课程成绩都高于85分的学生姓名。(3)在`student`表上创建一个触发器`trg_before_insert_student`,要求在插入新学生记录前,检查`birth_date`是否早于当前日期,如果不是,则阻止插入并给出错误提示(使用`SIGNALSQLSTATE`)。(4)创建一个视图`v_student_score`,显示学生姓名、课程名称、成绩,并且只显示成绩大于等于60分的数据。答案:(1)```sqlSELECTs.stu_name,AVG(sc.score)ASavg_scoreFROMstudentsJOINscorescONs.stu_id=sc.stu_idGROUPBYs.stu_id,s.stu_nameORDERBYavg_scoreDESC;```(2)```sqlSELECTs.stu_nameFROMstudentsWHERENOTEXISTS(SELECT1FROMscorescWHEREsc.stu_id=s.stu_idANDsc.score<=85);或使用聚合函数方法SELECTs.stu_nameFROMstudentsJOINscorescONs.stu_id=sc.stu_idGROUPBYs.stu_id,s.stu_nameHAVINGMIN(sc.score)>85;```(3)```sqlDELIMITER//CREATETRIGGERtrg_before_insert_studentBEFOREINSERTONstudentFOREACHROWBEGINIFNEW.birth_date>=CURDATE()THENSIGNALSQLSTATE'45000'SETMESSAGE_TEXT='出生日期必须早于当前日期';ENDIF;END//DELIMITER;```(4)```sqlCREATEVIEWv_student_scoreASSELECTs.stu_name,sc.course_name,sc.scoreFROMstudentsJOINscorescONs.stu_id=sc.stu_idWHEREsc.score>=60;```27.某在线商城数据库包含以下简化表:`商品表(product)`:`pid`(商品ID,主键),`pname`(商品名),`price`(单价),`stock`(库存)。`订单表(orders)`:`oid`(订单ID,主键),`order_time`(下单时间),`total_amount`(订单总额),`uid`(用户ID)。`订单详情表(order_detail)`:`did`(详情ID,主键),`oid`(订单ID,外键),`pid`(商品ID,外键),`quantity`(购买数量),`subtotal`(小计金额)。请分析并编写SQL解决以下业务问题:(1)由于业务调整,需要将“电子产品”类商品(假设其`pid`在1000-1999之间)的单价统一上调10%。请编写更新语句。(2)统计2024年第一季度(1月1日至3月31日)每个商品的销售总数量,并列出销售总量前三的商品ID和总数量。(3)发现订单总额`total_amount`可能与订单详情中所有商品小计之和`subtotal`不一致。请编写一个查询,找出所有`total_amount`不等于其对应所有`subtotal`之和的订单ID、订单总额以及计算出的详情小计之和。(4)为了提高“查询某用户最近6个月订单总消费金额”的性能,请提出至少两种可行的数据库优化方案(不要求写具体SQL)。答案:(1)```sqlUPDATEproductSETprice=price1.10SETprice=price1.10WHEREpidBETWEEN1000AND1999;```(2)```sqlSELECTpid,SUM(quantity)AStotal_soldFROMorder_detailodJOINordersoONod.oid=o.oidWHEREo.order_time>='2024-01-01'ANDo.order_time<'2024-04-01'GROUPBYpidORDERBYtotal_soldDESCLIMIT3;```(3)```sqlSELECTo.oid,o.total_amount,SUM(od.subtotal)ASdetail_sumFROMordersoLEFTJOINorder_detailodONo.oid=od.oidGROUPBYo.oid,o.total_amountHAVINGo.total_amount!=COALESCE(SUM(od.subtotal),0);使用COALESCE处理没有详情的订单(假设为0)```(4)方案一:为`orders`表的`uid`和`order_time`字段创建复合索引。例如:`CREATEINDEXidx_user_timeONorders(uid,order_timeDESC);`。这样在按用户和按时间范围(最近6个月)查询时,可以利用索引快速定位数据,避免全表扫描,然后在索引覆盖的情况下直接计算`total_amount`的和。方案二:建立定期汇总表(物化视图/历史表)。创建一个`user_monthly_summary`表,定期(如每天)将每个用户每月的消费总额汇总后存入。查询用户最近6个月总消费时,直接从这个汇总表中查询6条记录相加,数据量远小于从原始大表中进行聚合计算,性能显著提升。此方案以空间和一定的数据延迟换取查询时间。六、应用题(分析类)28.现有以下`employee`表的部分数据和查询语句:表数据:emp_idemp_namedept_idsalary1张三1050002李四1060003王五2070004赵六2080005钱七305500查询语句A:```sqlSELECTdept_id,AVG(salary)asavg_salFROMemployeeGROUPBYdept_id;```查询语句B:```sqlSELECTemp_name,salary,(SELECTAVG(salary)FROMemployeee2WHEREe2.dept_id=e1.dept_id)asdept_avg_salFROMemployeee1;```(1)分别写出执行查询A和查询B的结果。(2)分析查询A和查询B在逻辑上的异同点。查询B相较于查询A有何优缺点?(3)除了查询B中使用的方法,还有哪种常见的SQL技术可以实现“在查询每个员工信息的同时,显示其所在部门的平均工资”这一需求?请写出该方法的SQL语句。答案:(1)查询A结果:dep

温馨提示

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

最新文档

评论

0/150

提交评论