2025年MySQL测试卷及答案_第1页
2025年MySQL测试卷及答案_第2页
2025年MySQL测试卷及答案_第3页
2025年MySQL测试卷及答案_第4页
2025年MySQL测试卷及答案_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

2025年MySQL测试卷及答案一、单项选择题(每题2分,共30分)1.关于MySQL存储引擎,以下描述错误的是:A.InnoDB支持事务和行级锁B.MyISAM不支持外键但查询速度快C.Memory引擎数据存储在内存中,重启后数据丢失D.InnoDB默认事务隔离级别是读未提交(READUNCOMMITTED)答案:D(InnoDB默认隔离级别是可重复读(REPEATABLEREAD))2.以下哪项不是事务ACID特性的组成部分?A.原子性(Atomicity)B.一致性(Consistency)C.并发性(Concurrency)D.持久性(Durability)答案:C3.执行`EXPLAINSELECTFROMuserWHEREage>25`后,type字段显示为`ALL`,说明:A.使用了全表扫描B.使用了索引范围扫描C.使用了覆盖索引D.使用了唯一索引查找答案:A4.若要限制用户表中username字段值唯一且非空,应使用的约束是:A.PRIMARYKEYB.UNIQUENOTNULLC.FOREIGNKEYD.CHECK答案:B(UNIQUE约束自动隐含NOTNULL)5.关于redolog和binlog的区别,错误的是:A.redolog是InnoDB特有的,binlog是MySQLServer层的B.redolog记录物理修改,binlog记录逻辑操作C.redolog循环写入,binlog追加写入D.redolog用于主从复制,binlog用于崩溃恢复答案:D(binlog用于主从复制,redolog用于崩溃恢复)6.以下哪种索引类型在InnoDB中不存在?A.B+树索引B.哈希索引C.全文索引D.空间索引答案:B(InnoDB在MySQL8.0+支持显式哈希索引,但默认使用B+树)7.执行`DELETEFROMordersWHEREcreate_time<'2023-01-01'`时,若create_time字段无索引,最可能导致:A.行级锁升级为表锁B.事务自动回滚C.触发慢查询日志D.索引失效答案:C(全表扫描可能导致执行时间过长,触发慢查询)8.主从复制中,从库的SQL线程负责:A.从主库接收binlog并写入中继日志B.解析中继日志并执行SQL语句C.监控主库状态D.提供binlog事件答案:B9.若要将表的存储引擎从MyISAM修改为InnoDB,正确的SQL语句是:A.ALTERTABLEtable_nameENGINE=InnoDB;B.MODIFYTABLEtable_nameENGINE=InnoDB;C.CHANGETABLEtable_nameENGINE=InnoDB;D.UPDATETABLEtable_nameSETENGINE=InnoDB;答案:A10.关于临时表(TEMPORARYTABLE),错误的是:A.临时表仅对当前会话可见B.临时表可以与普通表同名C.临时表数据在会话结束后自动删除D.临时表支持所有存储引擎答案:D(部分存储引擎不支持临时表,如CSV)11.执行`SELECTCOUNT()`和`SELECTCOUNT(1)`的主要区别是:A.COUNT()统计所有行,COUNT(1)统计非NULL行B.COUNT()忽略NULL值,COUNT(1)不忽略C.无区别,优化器会视为相同操作D.COUNT()性能更优答案:C(MySQL优化器对两者处理一致)12.以下哪项会导致索引失效?A.对索引列使用函数(如WHEREYEAR(create_time)=2024)B.索引列参与范围查询(如WHEREprice>100)C.使用复合索引的左前缀(如索引(a,b,c),查询WHEREa=1)D.使用索引列进行等值匹配(如WHEREid=100)答案:A13.事务中执行`INSERTINTOtVALUES(1);`后未提交,此时另一个事务查询t表,默认隔离级别下会:A.看到插入的行(读未提交)B.看不到插入的行(可重复读)C.看到插入的行(读已提交)D.报错(串行化)答案:B(InnoDB默认隔离级别是可重复读,未提交事务不可见)14.关于慢查询日志,错误的是:A.可通过`slow_query_log`变量开启B.记录执行时间超过`long_query_time`的SQLC.包含未使用索引的查询(`log_queries_not_using_indexes`)D.仅记录SELECT语句答案:D(慢查询日志记录所有执行慢的DML语句)15.若要查询当前数据库中所有表的行数,最有效的方法是:A.对每张表执行`SELECTCOUNT()`B.查询`information_schema.TABLES`表的`TABLE_ROWS`字段C.使用`SHOWTABLESTATUS`命令D.使用存储过程遍历所有表答案:B(`TABLE_ROWS`是近似值,适合快速统计)二、填空题(每题2分,共20分)1.MySQL中用于临时存储用户变量的符号是______。(@变量名)2.InnoDB缓冲池(BufferPool)的默认大小由______参数控制。(innodb_buffer_pool_size)3.主从复制中,主库需要开启______日志。(binlog)4.若要限制事务的最大执行时间,可设置______参数。(innodb_lock_wait_timeout)5.执行`UPDATE`语句时,InnoDB会自动为被修改的行加______锁。(排他(X))6.复合索引的最左匹配原则指查询条件需从索引的______开始连续使用。(第一列)7.用于恢复误删除数据的MySQL工具是______(需结合binlog)。(mysqlbinlog)8.存储过程中使用______语句返回结果集。(SELECT)9.分区表中,若未指定分区键,需使用______分区类型。(HASH或KEY)10.查看当前连接数的命令是______。(SHOWSTATUSLIKE'Threads_connected')三、简答题(每题5分,共30分)1.简述InnoDB的行锁机制及常见死锁场景。答:InnoDB行锁基于索引实现,分为共享锁(S锁)和排他锁(X锁)。常见死锁场景:①两个事务交叉更新两行(如事务1更新A行后更新B行,事务2更新B行后更新A行);②索引失效导致锁升级为表锁,引发多事务等待;③批量更新时,事务持有大量行锁,其他事务请求冲突锁。2.慢查询优化的主要步骤有哪些?答:①开启慢查询日志,定位慢SQL;②使用EXPLAIN分析执行计划,检查type(是否全表扫描)、key(是否使用索引)、rows(扫描行数);③优化索引(添加复合索引、修复索引失效);④重写SQL(避免SELECT、减少子查询、使用JOIN代替子查询);⑤分表/分区(按时间或范围拆分大表);⑥调整数据库参数(如缓冲池大小、连接数)。3.主从复制的原理及主要步骤。答:原理:主库记录binlog(二进制日志),从库通过I/O线程接收binlog并写入中继日志(relaylog),SQL线程解析中继日志并在从库执行,实现数据同步。步骤:①主库开启binlog,创建复制用户;②从库配置master_host、master_user、master_log_file等参数;③从库执行STARTSLAVE启动复制;④检查Slave_IO_Running和Slave_SQL_Running状态是否为Yes。4.事务的四种隔离级别及各自特点。答:①读未提交(READUNCOMMITTED):允许读取未提交数据,存在脏读;②读已提交(READCOMMITTED):只读取已提交数据,避免脏读但可能不可重复读;③可重复读(REPEATABLEREAD):InnoDB默认级别,保证同一事务内多次读取结果一致,避免不可重复读但可能出现幻读;④串行化(SERIALIZABLE):最高隔离级别,事务串行执行,避免所有并发问题但性能最差。5.索引的优缺点及适用场景。答:优点:加速查询、减少CPU和I/O消耗;缺点:增加写操作(INSERT/UPDATE/DELETE)开销、占用额外存储、可能影响统计信息准确性。适用场景:①列被频繁查询(WHERE/JOIN条件);②列值范围大(如VARCHAR(255));③多表连接的关联列;④排序或分组的列(ORDERBY/GROUPBY)。6.binlog的作用及三种格式区别。答:作用:主从复制、数据恢复(基于时间点恢复)、审计。格式:①STATEMENT(语句级):记录SQL语句,节省空间但可能因函数(如NOW())导致主从不一致;②ROW(行级):记录行修改细节,更安全但空间占用大;③MIXED(混合级):自动选择STATEMENT或ROW,平衡空间和一致性。四、操作题(每题6分,共30分)1.创建员工表(employee),要求包含以下字段及约束:id:主键,自增整数name:姓名,VARCHAR(50),非空dept_id:部门ID,INT,外键关联部门表(department)的id字段salary:薪资,DECIMAL(10,2),默认值5000entry_date:入职时间,DATETIME,非空答:```sqlCREATETABLEemployee(idINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(50)NOTNULL,dept_idINT,salaryDECIMAL(10,2)DEFAULT5000,entry_dateDATETIMENOTNULL,FOREIGNKEY(dept_id)REFERENCESdepartment(id));```2.查询2024年入职、薪资高于10000元的员工,按薪资降序排列,显示姓名、薪资和入职时间。答:```sqlSELECTname,salary,entry_dateFROMemployeeWHEREYEAR(entry_date)=2024ANDsalary>10000ORDERBYsalaryDESC;```3.为employee表的name字段添加普通索引,为(dept_id,salary)添加复合索引。答:```sqlCREATEINDEXidx_nameONemployee(name);CREATEINDEXidx_dept_salaryONemployee(dept_id,salary);```4.开启一个事务,将id为1001的员工薪资增加2000元,若操作后薪资超过20000元则回滚,否则提交。答:```sqlSTARTTRANSACTION;UPDATEemployeeSETsalary=salary+2000WHEREid=1001;SELECTsalaryINTO@new_salaryFROMemployeeWHEREid=1001;IF@new_salary>20000THENROLLBACK;ELSECOMMIT;ENDIF;```5.备份当前数据库(db1)中所有表结构和数据,同时备份binlog位置,输出到/backup/db1_20250101.sql文件。答:```sqlmysqldump-uroot-p--single-transaction--master-data=2db1>/backup/db1_20250101.sql```五、综合题(每题10分,共20分)1.某社交平台用户表(user)数据量达5000万条,主要查询场景为:根据手机号(mobile)查询用户信息(90%查询)查询近30天注册的用户(register_time)并按注册时间排序(5%查询)统计各地区(region)的用户数量(5%查询)请设计表结构优化方案(包括存储引擎、字段类型、索引)及数据归档策略。答:优化方案:、(1)存储引擎:使用InnoDB(支持事务和行锁,适合高并发)。(2)字段类型:mobile建议使用VARCHAR(11)(固定长度11位手机号),register_time使用DATETIME(精确到秒),region使用TINYINT(预定义地区编码,节省空间)。(3)索引设计:①为mobile添加唯一索引(UNIQUEINDEXidx_mobile),加速90%的查询;②为(register_time,region)添加复合索引,覆盖近30天查询(WHEREregister_time>NOW()-INTERVAL30DAY)和统计需求(GROUPBYregion);③主键使用自增INT(若id

温馨提示

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

最新文档

评论

0/150

提交评论