2025年mysql期末考试题及答案机考_第1页
2025年mysql期末考试题及答案机考_第2页
2025年mysql期末考试题及答案机考_第3页
2025年mysql期末考试题及答案机考_第4页
2025年mysql期末考试题及答案机考_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

2025年mysql期末考试题及答案机考一、单项选择题(共20题,每题2分,共40分。每题只有1个正确答案)1.MySQL8.0版本默认的存储引擎是()A.MyISAMB.InnoDBC.MemoryD.CSV答案:B解析:MySQL5.5之后默认存储引擎为InnoDB,8.0版本完全移除了对MyISAM的系统表依赖,默认存储引擎仍为InnoDB。InnoDB支持事务、行级锁、外键、崩溃恢复等特性,适合绝大多数业务场景。2.以下关于MySQL数据类型的描述,正确的是()A.char(n)最多可存储n个字节,长度固定B.varchar(n)最多可存储n个字节,长度可变C.TEXT类型字段可以设置默认值D.int(10)和int(5)的存储长度一致,仅显示宽度不同答案:D解析:A选项char(n)的n代表字符数,最大长度为255字符;B选项varchar(n)的n代表字符数,最大存储长度受限于行最大65535字节的限制;C选项TEXT、BLOB等大字段类型不允许设置默认值;D选项int类型的存储长度固定为4字节,括号内的数字仅为显示宽度,不影响存储范围。3.以下事务隔离级别中,会出现脏读问题的是()A.读未提交(READUNCOMMITTED)B.读提交(READCOMMITTED)C.可重复读(REPEATABLEREAD)D.串行化(SERIALIZABLE)答案:A解析:脏读指一个事务读取到另一个未提交事务修改的数据,仅读未提交隔离级别未解决脏读问题;读提交及以上隔离级别均通过MVCC机制避免了脏读。4.InnoDB存储引擎中,聚簇索引的存储结构是()A.索引节点存储索引值,叶子节点存储数据行B.索引节点和叶子节点都仅存储索引值和主键IDC.叶子节点存储索引值和数据行的物理地址D.聚簇索引可以创建多个答案:A解析:InnoDB的聚簇索引是将索引和数据行存储在一起,叶子节点直接存储完整的数据行,一张表只能有1个聚簇索引,默认以主键作为聚簇索引;非聚簇索引的叶子节点存储的是主键值。5.执行EXPLAIN分析SQL时,type列的以下返回值中,性能最优的是()A.refB.rangeC.eq_refD.index答案:C解析:type列反映SQL的关联类型,性能从高到低排序为:system>const>eq_ref>ref>range>index>ALL。eq_ref表示使用唯一索引或主键索引进行等值匹配,最多返回1条匹配记录,性能仅次于const和system。6.MVCC(多版本并发控制)的核心实现不包含以下哪一项()A.UndoLog版本链B.ReadViewC.RedoLogD.事务ID答案:C解析:MVCC的实现依赖事务ID、UndoLog版本链、ReadView三个核心组件:每个事务分配唯一递增的事务ID,UndoLog保存数据行的历史版本,ReadView判断当前事务可见的版本。RedoLog是重做日志,用于崩溃恢复,与MVCC无关。7.以下关于RedoLog和UndoLog的描述,错误的是()A.RedoLog是物理日志,记录数据页的修改B.UndoLog是逻辑日志,记录数据修改的逆操作C.RedoLog采用循环写入的方式,有固定大小D.UndoLog在事务提交后会被立即删除答案:D解析:UndoLog在事务提交后不会被立即删除,会被放入purge队列,等待系统判断没有事务需要引用该版本数据时才会被清理。8.MySQL主从复制架构中,从库上负责读取主库Binlog并写入中继日志(RelayLog)的线程是()A.IO线程B.SQL线程C.BinlogDump线程D.Worker线程答案:A解析:主从复制的核心线程:主库的BinlogDump线程负责推送Binlog到从库;从库的IO线程负责接收Binlog并写入RelayLog;从库的SQL线程负责重放RelayLog中的操作,实现主从数据同步。9.以下哪项不是MySQL8.0版本新增的特性()A.原子DDLB.窗口函数C.事务支持D.通用表表达式(CTE)答案:C解析:事务支持是InnoDB存储引擎早已支持的特性,并非8.0新增。8.0新增的特性包括原子DDL、窗口函数、递归CTE、JSON增强、隐式索引、并行复制优化等。10.联合索引(a,b,c)无法使用到索引的查询条件是()A.wherea=1andb=2B.wherea=1andb>2andc=3C.whereb=2andc=3D.wherea=1andc=3答案:C解析:联合索引遵循最左匹配原则,查询条件必须包含索引最左侧的列才能使用索引,C选项的查询条件没有包含a列,无法命中该联合索引。B选项中b是范围查询,范围查询之后的c列无法命中索引,但a和b列可以使用索引。11.以下锁类型中,属于InnoDB行级锁的是()A.意向共享锁B.记录锁C.元数据锁D.全局读锁答案:B解析:意向共享锁属于表级锁,元数据锁、全局读锁也属于表级锁;记录锁、间隙锁、临键锁属于InnoDB的行级锁。12.可重复读隔离级别下,InnoDB使用以下哪种机制解决大部分幻读问题()A.行级锁B.MVCC+临键锁C.表级锁D.乐观锁答案:B解析:可重复读隔离级别下,快照读通过MVCC的版本链机制避免幻读,当前读通过临键锁(记录锁+间隙锁)避免其他事务插入符合条件的记录,从而解决绝大部分幻读场景,仅在极端场景下仍可能出现幻读。13.以下关于慢查询日志的描述,正确的是()A.慢查询日志默认开启B.long_query_time参数的默认值为1秒C.慢查询日志只会记录执行时间超过long_query_time的查询语句,不包含未使用索引的语句D.慢查询日志的格式只能是文本格式答案:B解析:A选项慢查询日志默认关闭;C选项开启log_queries_not_using_indexes参数后,未使用索引的查询也会被记录到慢查询日志;D选项慢查询日志支持文本和CSV两种格式;B选项long_query_time默认值为1秒,执行时间超过该值的语句会被记录。14.GTID(全局事务标识符)的作用是()A.唯一标识主库上的每个事务,简化主从复制故障切换B.优化索引查询性能C.实现事务的原子性D.避免死锁答案:A解析:GTID是MySQL5.6之后新增的特性,为每个提交的事务分配唯一的全局标识符,主从复制时可以通过GTID快速定位同步位置,大幅简化主从切换、故障排查的复杂度。15.以下关于COUNT函数的描述,正确的是()A.InnoDB引擎下,COUNT(*)的性能远高于COUNT(1)B.COUNT(字段)会统计该字段为NULL的记录C.COUNT(*)会统计所有符合条件的记录,不忽略NULL值D.MyISAM引擎下COUNT(*)需要全表扫描统计数量答案:C解析:A选项InnoDB下COUNT(*)和COUNT(1)的性能几乎一致,没有明显差异;B选项COUNT(字段)会忽略该字段为NULL的记录;D选项MyISAM内置了行计数器,COUNT(*)不需要全表扫描,直接返回计数器值;C选项COUNT(*)统计所有记录,不忽略NULL值。16.以下哪种场景适合使用哈希索引()A.前缀匹配查询,如like'abc%'B.范围查询,如agebetween18and30C.等值匹配查询,如user_id=1234D.排序查询,如orderbycreate_time答案:C解析:哈希索引仅支持等值匹配查询,不支持前缀匹配、范围查询、排序等场景,仅在等值查询场景下性能优于B+树索引。17.以下关于唯一索引的描述,错误的是()A.一张表可以创建多个唯一索引B.唯一索引的列不允许出现重复值C.唯一索引的列允许存在多个NULL值D.唯一索引无法提升查询性能答案:D解析:唯一索引属于索引的一种,既可以实现数据唯一性约束,也可以和普通索引一样提升查询性能。18.递归CTE(通用表表达式)的关键字是()A.WITHRECURSIVEB.WITHUNIONC.WITHASD.WITHLOOP答案:A解析:MySQL8.0支持递归CTE,使用WITHRECURSIVE关键字定义,可以实现树形结构遍历、序列生成等递归场景。19.以下关于JSON数据类型的操作,错误的是()A.使用->运算符可以提取JSON字段的属性值B.JSON_INSERT函数可以插入新的JSON属性,不会覆盖已有属性C.JSON类型字段无法创建索引D.JSON_CONTAINS函数可以判断JSON中是否包含指定元素答案:C解析:MySQL8.0支持为JSON类型的字段创建函数索引,如INDEXidx((JSON_EXTRACT(content,'$.name'))),可以提升JSON字段的查询性能。20.死锁发生的必要条件不包含以下哪一项()A.互斥条件B.不可剥夺条件C.请求与保持条件D.事务提交条件答案:D解析:死锁的四个必要条件为互斥、不可剥夺、请求与保持、循环等待,四个条件同时满足时才会发生死锁,事务提交不是死锁的必要条件。二、多项选择题(共10题,每题3分,共30分。每题有2个及以上正确答案,漏选得1分,错选不得分)1.事务的ACID特性包括()A.原子性(Atomicity)B.一致性(Consistency)C.隔离性(Isolation)D.持久性(Durability)答案:ABCD解析:ACID是事务的四个核心特性,分别对应原子性、一致性、隔离性、持久性,保障事务操作的可靠性。2.以下属于索引的优点的是()A.提升查询效率B.加速排序和分组操作C.提升写入操作的性能D.可以将随机IO转换为顺序IO答案:ABD解析:索引的优点包括提升查询效率、加速orderby和groupby操作、将随机IO转换为顺序IO;但索引会降低写入性能,因为写入数据时需要同时维护索引结构。3.以下属于MySQL的日志类型的有()A.Binlog日志B.RedoLog日志C.UndoLog日志D.SlowQueryLog日志答案:ABCD解析:MySQL的日志包括二进制日志(Binlog)、重做日志(RedoLog)、回滚日志(UndoLog)、慢查询日志(SlowQueryLog)、错误日志、通用查询日志、中继日志等。4.以下关于联合索引最左匹配原则的描述,正确的有()A.查询条件跳过最左侧列时,无法使用联合索引B.查询条件包含最左侧列,中间列是范围查询时,范围查询右侧的列无法使用索引C.查询条件中最左侧列是等值匹配时,可以跳过中间的列使用后续列的索引D.查询条件包含联合索引的所有列时,所有列都可以使用到索引答案:ABD解析:C选项错误,联合索引必须按顺序匹配,跳过中间列时,后续列无法使用索引。其余选项均符合最左匹配原则的规则。5.以下属于InnoDB行锁算法的有()A.记录锁(RecordLock)B.间隙锁(GapLock)C.临键锁(Next-KeyLock)D.意向锁(IntentionLock)答案:ABC解析:记录锁、间隙锁、临键锁属于InnoDB的行级锁算法,临键锁是记录锁和间隙锁的组合,是InnoDB默认的行锁算法;意向锁属于表级锁,不属于行锁算法。6.主从复制延迟的常见原因有()A.主库写入压力过大,Binlog产生速度过快B.从库硬件性能弱于主库C.从库未开启并行复制,单线程重放RelayLogD.大事务提交,导致从库重放时间过长答案:ABCD解析:四个选项均为主从复制延迟的常见原因,此外网络延迟、主库和从库的表结构差异、未使用GTID等也可能导致复制延迟。7.以下SQL优化建议中,正确的有()A.避免使用SELECT*,只查询需要的字段B.尽量使用unionall代替union,避免去重开销C.大表分页查询时可以使用子查询优化偏移量过大的问题D.为所有字段都创建索引,提升查询性能答案:ABC解析:D选项错误,索引不是越多越好,过多的索引会大幅降低写入性能,占用更多磁盘空间,仅需要为查询、排序、分组涉及的字段创建合适的索引。其余选项均为正确的优化建议。8.以下属于MySQL8.0新增特性的有()A.不可见索引B.降序索引C.原子DDLD.窗口函数答案:ABCD解析:四个选项均为MySQL8.0新增的特性,不可见索引可以在不删除索引的情况下测试索引的作用,降序索引可以提升降序排序的性能,原子DDL避免了DDL操作中途失败导致的表结构损坏,窗口函数可以实现复杂的统计分析需求。9.以下操作会触发表锁的场景有()A.未使用索引的更新操作B.执行ALTERTABLE修改表结构C.执行LOCKTABLES命令D.基于主键的等值更新操作答案:ABC解析:D选项基于主键的等值更新会加行级锁,不会触发表锁;A选项未使用索引时,InnoDB无法定位行,会升级为表锁;B选项DDL操作会加元数据写锁,属于表级锁;C选项LOCKTABLES会显式加表锁。10.以下关于Explain输出字段的描述,正确的有()A.key列表示实际使用的索引B.rows列表示扫描的行数,值越小性能越好C.Extra列出现Usingfilesort表示需要优化排序操作D.Extra列出现Usingindex表示使用了覆盖索引,不需要回表答案:ABCD解析:四个选项的描述均正确,Extra列是Explain输出的核心分析字段,Usingfilesort、Usingtemporary都是需要优化的标识,Usingindex是覆盖索引的标识,性能优秀。三、判断题(共10题,每题1分,共10分。正确填√,错误填×)1.varchar(50)表示该字段最多可以存储50个字节的数据。()答案:×解析:varchar(n)的n代表字符数,不是字节数,varchar(50)最多可以存储50个字符,存储字节数受字符集影响,utf8mb4字符集下每个字符占4字节,最多占用200字节。2.MySQL8.0支持原子DDL,执行DROPTABLE操作时如果中途崩溃,不会出现部分删除的问题。()答案:√解析:原子DDL是MySQL8.0的核心特性,将DDL操作的元数据修改、数据文件修改、Binlog写入打包为原子操作,要么全部成功,要么全部回滚,避免了DDL操作损坏数据的问题。3.可重复读隔离级别已经完全解决了幻读问题。()答案:×解析:可重复读隔离级别仅解决了绝大部分幻读场景,在快照读和当前读结合的极端场景下仍可能出现幻读,比如事务1先快照读查询符合条件的记录有3条,事务2插入1条符合条件的记录并提交,事务1再执行当前读更新所有符合条件的记录,会发现更新了4条记录,出现幻读。4.InnoDB的主键一定是聚簇索引,如果没有显式定义主键,会使用第一个非空唯一索引作为聚簇索引。()答案:√解析:InnoDB的聚簇索引选择规则为:优先选择用户定义的主键作为聚簇索引;没有主键时选择第一个非空唯一索引作为聚簇索引;也没有非空唯一索引时,自动生成一个隐藏的rowid作为聚簇索引。5.MVCC机制在所有事务隔离级别下都生效。()答案:×解析:MVCC仅在读提交(READCOMMITTED)和可重复读(REPEATABLEREAD)两个隔离级别下生效,读未提交每次读取最新数据,不需要MVCC;串行化使用加锁的方式控制并发,也不需要MVCC。6.唯一索引的列不允许存在NULL值。()答案:×解析:唯一索引的列仅限制非NULL值不能重复,允许存在多个NULL值,因为NULL和NULL之间不相等。7.Binlog是物理日志,记录数据页的修改内容。()答案:×解析:Binlog是逻辑日志,记录SQL操作的原始逻辑;RedoLog是物理日志,记录数据页的修改内容。8.覆盖索引指的是查询需要的所有字段都在索引中,不需要回表查询数据行。()答案:√解析:覆盖索引是索引优化的常用手段,查询的字段全部包含在索引中时,直接从索引节点获取数据,不需要回表查询聚簇索引,大幅提升查询性能。9.InnoDB的自适应哈希索引是用户可以手动创建的。()答案:×解析:自适应哈希索引是InnoDB存储引擎自动监控索引查询热点,自动为热点页创建的哈希索引,用户无法手动创建或删除。10.半同步主从复制的数据一致性高于异步主从复制。()答案:√解析:异步主从复制主库提交事务后不需要等待从库确认,直接返回客户端,主库宕机时可能丢失数据;半同步复制主库提交事务后需要等待至少一个从库接收Binlog并写入RelayLog的确认,才返回客户端,数据一致性更高。四、实操题(共2题,每题10分,共20分,机考环境为MySQL8.0.x版本,所有操作需写出可执行SQL或明确操作步骤)1.电商订单系统实操(10分)现有三张表:用户表users:user_idINTPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(20)NOTNULL,phoneVARCHAR(11)NOTNULL,register_timeDATETIMENOTNULL订单表orders:order_idINTPRIMARYKEYAUTO_INCREMENT,user_idINTNOTNULL,order_amountDECIMAL(10,2)NOTNULL,order_timeDATETIMENOTNULL,statusTINYINTNOTNULLCOMMENT'1待支付2已支付3已取消'订单明细表order_item:item_idINTPRIMARYKEYAUTO_INCREMENT,order_idINTNOTNULL,goods_idINTNOTNULL,goods_numINTNOTNULL,goods_priceDECIMAL(10,2)NOTNULL要求完成以下操作:(1)创建上述三张表,要求存储引擎为InnoDB,字符集为utf8mb4,排序规则为utf8mb4_general_ci,user_id、order_id分别为对应表的外键,关联父表的主键(3分)(2)插入测试数据:插入2个用户,每个用户对应3个订单,每个订单对应2个订单项(2分)(3)查询2024年1月1日之后注册的用户中,已支付订单总金额大于1000元的用户ID、用户名、总订单金额、购买的商品总数量,按总订单金额降序排序(5分)参考答案:(1)建表SQL:CREATEDATABASEIFNOTEXISTS电商DEFAULTCHARSETutf8mb4COLLATEutf8mb4_general_ci;USE电商;CREATETABLEusers(user_idINTPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(20)NOTNULL,phoneVARCHAR(11)NOTNULL,register_timeDATETIMENOTNULL)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ci;CREATETABLEorders(order_idINTPRIMARYKEYAUTO_INCREMENT,user_idINTNOTNULL,order_amountDECIMAL(10,2)NOTNULL,order_timeDATETIMENOTNULL,statusTINYINTNOTNULLCOMMENT'1待支付2已支付3已取消',FOREIGNKEY(user_id)REFERENCESusers(user_id))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ci;CREATETABLEorder_item(item_idINTPRIMARYKEYAUTO_INCREMENT,order_idINTNOTNULL,goods_idINTNOTNULL,goods_numINTNOTNULL,goods_priceDECIMAL(10,2)NOTNULL,FOREIGNKEY(order_id)REFERENCESorders(order_id))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ci;(2)插入测试数据示例:INSERTINTOusers(username,phone,register_time)VALUES('张三',,'2024-01-0210:00:00'),('李四',,'2023-12-3010:00:00');INSERTINTOorders(user_id,order_amount,order_time,status)VALUES(1,500.00,'2024-01-0310:00:00',2),(1,600.00,'2024-01-0410:00:00',2),(1,100.00,'2024-01-0510:00:00',1),(2,300.00,'2024-01-0310:00:00',2),(2,400.00,'2024-01-0410:00:00',2),(2,200.00,'2024-01-0510:00:00',3);INSERTINTOorder_item(order_id,goods_id,goods_num,goods_price)VALUES(1,1,1,300.00),(1,2,1,200.00),(2,3,2,300.00),(2,1,0,0.00),(3,2,1,100.00),(3,3,0,0.00),(4,1,1,300.00),(4,2,0,0.00),(5,3,1,400.00),(5,1,0,0.00),(6,2,1,200.00),(6,3,0,0.00);(3)查询SQL:SELECTu.user_id,u.username,SUM(o.order_amount)AStotal_amount,SUM(oi.goods_num)AStotal_goods_numFROMusersuINNERJOINordersoONu.user_id=o.user_idINNERJOINorder_itemoiONo.order_id=oi.order_idWHEREu.register_time>='2024-01-0100:00:00'ANDo.status=2GROUPBYu.user_id,u.usernameHAVINGtotal_amount>1000ORDERBYtotal_amountDESC;评分标准:外键关联正确1分,字符集和引擎配置正确1分,表结构字段正确1分;测试数据插入符合要求2分;查询SQL关联正确2分,筛选条件正确1分,聚合逻辑正确1分,排序正确1分。2.SQL优化实操(10分)现有用户行为表user_behavior,表结构如下:CREATETABL

温馨提示

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

评论

0/150

提交评论