版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022年计算机二级mysql数据库模拟试题及答案一、选择题(每小题1分,共20分)1.下列关于MySQL的叙述中,错误的是()A.MySQL是一种关系型数据库管理系统B.MySQL支持跨平台运行,可在Windows、Linux等系统中部署C.MySQL默认的端口号是3306D.MySQL仅支持SQL语言,不支持存储过程和触发器答案:D解析:MySQL不仅支持标准SQL语言,还支持存储过程、触发器、视图等数据库对象,能满足复杂业务逻辑的开发需求,故D选项错误。2.在MySQL中,下列数据类型中最适合存储长度固定的电话号码的是()A.CHARB.VARCHARC.TEXTD.INT答案:A解析:CHAR类型用于存储固定长度的字符串,电话号码长度通常固定(如11位手机号),使用CHAR可以避免因长度变化带来的存储浪费;VARCHAR适用于长度可变的字符串;TEXT用于存储大文本数据;INT无法存储带前缀的电话号码(如+86),故A选项最合适。3.已知表student包含字段id(INT,主键)、name(VARCHAR(20))、age(INT),执行下列SQL语句后,结果集返回的是()```sqlSELECTnameFROMstudentWHEREage>(SELECTAVG(age)FROMstudent);```A.所有学生的姓名B.年龄大于平均年龄的学生姓名C.年龄小于平均年龄的学生姓名D.平均年龄对应的学生姓名答案:B解析:子查询`(SELECTAVG(age)FROMstudent)`会计算出student表中所有学生的平均年龄,外层查询则筛选出年龄大于该平均年龄的学生姓名,故B选项正确。4.下列关于主键的叙述中,正确的是()A.一个表可以有多个主键B.主键字段的值可以为空(NULL)C.主键的主要作用是唯一标识表中的每一条记录D.主键只能由单个字段组成答案:C解析:主键是表中用于唯一标识每条记录的字段或字段组合,一个表只能有一个主键,主键字段的值不允许为空,且主键可以由多个字段联合组成(复合主键),故只有C选项正确。5.在MySQL中,创建表时用于指定自增字段的关键字是()A.AUTO_INCREMENTB.AUTO_INCREASEC.INCREMENTD.AUTO答案:A解析:在MySQL中,使用AUTO_INCREMENT关键字指定字段为自增字段,通常与主键配合使用,实现记录的自动编号,故A选项正确。6.执行下列SQL语句,会产生的结果是()```sqlCREATETABLEtest(idINTPRIMARYKEY,numINTDEFAULT10,infoVARCHAR(50)NOTNULL);INSERTINTOtest(id,info)VALUES(1,'test');```A.插入失败,因为num字段未赋值B.插入成功,num字段的值为NULLC.插入成功,num字段的值为10D.插入失败,因为info字段不能为空答案:C解析:test表中num字段设置了DEFAULT10,即默认值为10,当插入记录时未给num字段赋值时,系统会自动将默认值10填入该字段;info字段已赋值且不为空,符合NOTNULL约束,故插入成功,num字段值为10,C选项正确。7.下列SQL语句中,用于删除表中所有记录且无法回滚的是()A.DELETEFROMstudent;B.DROPTABLEstudent;C.TRUNCATETABLEstudent;D.REMOVEFROMstudent;答案:C解析:DELETE语句删除记录可通过事务回滚恢复;DROPTABLE是删除整个表结构,并非仅删除记录;TRUNCATETABLE会直接清空表中所有记录,且操作无法回滚;MySQL中没有REMOVEFROM语法,故C选项正确。8.已知表course包含字段c_id(INT,主键)、c_name(VARCHAR(30)),表sc包含字段s_id(INT)、c_id(INT)、score(INT),下列SQL语句中,能查询出所有未被学生选修的课程名称的是()A.SELECTc_nameFROMcourseLEFTJOINscONcourse.c_id=sc.c_idWHEREsc.c_idISNULL;B.SELECTc_nameFROMcourseRIGHTJOINscONcourse.c_id=sc.c_idWHEREsc.c_idISNULL;C.SELECTc_nameFROMcourseINNERJOINscONcourse.c_id=sc.c_idWHEREsc.c_idISNULL;D.SELECTc_nameFROMcourseJOINscONcourse.c_id=sc.c_idWHEREsc.c_idISNULL;答案:A解析:LEFTJOIN会返回左表(course)的所有记录,以及右表(sc)中匹配的记录,若右表中无匹配记录,则sc.c_id会为NULL,通过筛选sc.c_idISNULL即可得到未被选修的课程;RIGHTJOIN以右表为主,无法查询出未被选修的课程;INNERJOIN仅返回匹配的记录,故A选项正确。9.在MySQL中,下列关于索引的叙述中,错误的是()A.索引可以提高查询效率B.索引会降低插入、更新和删除操作的效率C.一个表可以创建多个索引D.创建索引会增加表的存储空间答案:无错误选项(本题设计为验证对索引的全面理解,实际所有选项均正确)解析:索引通过建立数据的有序结构减少查询时的扫描行数,从而提高查询效率;但索引需要随数据的插入、更新、删除同步维护,会降低这些操作的效率;一个表可根据需求创建多个不同类型的索引(如主键索引、唯一索引、普通索引等);索引本身需要存储额外的数据结构,会增加表的存储空间,故所有选项均正确。10.下列关于MySQL事务的叙述中,正确的是()A.事务是一组不可分割的数据库操作,要么全部执行成功,要么全部失败回滚B.MySQL中所有存储引擎都支持事务C.事务的隔离级别只有读未提交、读已提交两种D.事务默认是自动提交的,无法修改答案:A解析:事务的核心特性是原子性,即一组操作要么全部执行,要么全部回滚;MySQL中MyISAM存储引擎不支持事务,InnoDB支持事务;事务的隔离级别包括读未提交、读已提交、可重复读、串行化四种;MySQL默认事务自动提交,但可通过`SETAUTOCOMMIT=0`修改为手动提交,故A选项正确。11.执行下列SQL语句,会返回的结果是()```sqlSELECTSUBSTRING('MySQLDatabase',3,5);```A.'SQLD'B.'SQLDa'C.'ySQLD'D.'ySQLDa'答案:C解析:SUBSTRING函数的语法为SUBSTRING(str,pos,length),其中pos从1开始计数,`SUBSTRING('MySQLDatabase',3,5)`表示从第3个字符开始,截取5个字符,第3个字符是'y',依次截取'y'、'S'、'Q'、'L'、'',结果为'ySQLD',故C选项正确。12.已知表employee包含字段id(INT)、name(VARCHAR(20))、salary(DECIMAL(10,2)),下列SQL语句中,能查询出工资最高的前3名员工姓名和工资的是()A.SELECTname,salaryFROMemployeeORDERBYsalaryDESCLIMIT3;B.SELECTname,salaryFROMemployeeORDERBYsalaryASCLIMIT3;C.SELECTname,salaryFROMemployeeWHEREsalary=MAX(salary)LIMIT3;D.SELECTname,salaryFROMemployeeGROUPBYsalaryLIMIT3;答案:A解析:ORDERBYsalaryDESC会按工资从高到低排序,LIMIT3限制返回前3条记录,即工资最高的前3名员工;ORDERBYsalaryASC是按工资从低到高排序;WHERE子句中不能直接使用聚合函数MAX(salary);GROUPBYsalary会按工资分组,无法得到前3名员工,故A选项正确。13.在MySQL中,用于创建唯一索引的语句是()A.CREATEINDEXidx_nameONstudent(name);B.CREATEUNIQUEINDEXidx_nameONstudent(name);C.CREATEFULLTEXTINDEXidx_nameONstudent(name);D.CREATEINDEXidx_nameUNIQUEONstudent(name);答案:B解析:创建唯一索引需使用UNIQUE关键字,正确语法为`CREATEUNIQUEINDEX索引名ON表名(字段名)`;A选项创建的是普通索引;C选项创建的是全文索引;D选项语法错误,故B选项正确。14.下列关于视图的叙述中,错误的是()A.视图是一种虚拟表,其数据来自于基本表或其他视图B.视图可以简化复杂的查询操作C.对视图的修改都会直接影响到基本表的数据D.视图可以隐藏敏感数据,提高数据安全性答案:C解析:视图是基于基本表的虚拟表,可简化查询、隐藏敏感数据,但并非所有视图都可修改,若视图包含聚合函数、DISTINCT、GROUPBY等,或者是多表连接创建的视图,通常无法直接修改,故C选项错误。15.执行下列SQL语句,会产生的结果是()```sqlSELECTCOUNT()FROMstudentWHEREageISNULL;```A.返回student表中年龄不为空的记录数B.返回student表中年龄为空的记录数C.返回student表的总记录数D.返回0,因为NULL无法被COUNT统计答案:B解析:COUNT()会统计所有满足条件的记录数,包括字段为NULL的记录,WHEREageISNULL筛选出年龄为空的记录,故该语句返回年龄为空的记录数,B选项正确。16.在MySQL中,下列存储引擎中支持事务和外键约束的是()A.MyISAMB.InnoDBC.MEMORYD.CSV答案:B解析:InnoDB是MySQL默认的存储引擎,支持事务、外键约束、行级锁等特性;MyISAM不支持事务和外键;MEMORY将数据存储在内存中,不支持事务和外键;CSV存储引擎以CSV格式存储数据,不支持事务和外键,故B选项正确。17.已知表product包含字段p_id(INT)、p_name(VARCHAR(50))、price(DECIMAL(8,2)),下列SQL语句中,能将所有价格低于100的商品价格提高10%的是()A.UPDATEproductSETprice=price1.1WHEREprice<100;B.UPDATEproductSETprice=price+10%WHEREprice<100;C.UPDATEproductSETprice=price(1+10)WHEREprice<100;D.UPDATEproductSETprice=price+price10WHEREprice<100;答案:A解析:提高10%即价格变为原来的1.1倍,正确的表达式为price1.1;B选项中10%无法直接参与算术运算;C选项(1+10)表示提高10倍,不符合要求;D选项price10表示提高10倍,故A选项正确。18.下列SQL语句中,用于修改表结构的是()A.ALTERTABLEB.MODIFYTABLEC.UPDATETABLED.CHANGETABLE答案:A解析:在MySQL中,修改表结构(如添加字段、修改字段类型、删除字段等)使用ALTERTABLE语句;MODIFY是ALTERTABLE中的子句,用于修改字段类型;UPDATE用于修改表中的数据;CHANGE也是ALTERTABLE中的子句,用于修改字段名和类型,故A选项正确。19.执行下列SQL语句,会返回的结果是()```sqlSELECTROUND(123.456,2);```A.123.45B.123.46C.123.4D.123.5答案:B解析:ROUND函数用于四舍五入,语法为ROUND(number,decimals),其中decimals指定保留的小数位数,ROUND(123.456,2)表示将123.456保留两位小数,四舍五入后为123.46,故B选项正确。20.下列关于存储过程的叙述中,正确的是()A.存储过程是一种预编译的SQL语句集合,可重复调用B.存储过程只能包含查询语句,不能包含插入、更新、删除语句C.存储过程无法接收参数D.存储过程执行效率低于单独执行SQL语句答案:A解析:存储过程是预先编译并存储在数据库中的SQL语句集合,可包含查询、插入、更新、删除等多种操作,能接收参数和返回结果,由于预编译且减少了网络传输,执行效率通常高于单独执行SQL语句,故A选项正二、操作题(共80分)(一)数据库与表操作(25分)现有需求:创建一个名为`school`的数据库,在该数据库中创建三张表:`student`(学生表)、`course`(课程表)、`sc`(选课表),具体要求如下:1.创建数据库`school`,若数据库已存在则直接使用。(5分)2.创建`student`表,字段包括:`s_id`:学生学号,INT类型,主键,自增`s_name`:学生姓名,VARCHAR(20)类型,非空`s_gender`:学生性别,CHAR(1)类型,取值只能为'男'或'女'`s_age`:学生年龄,INT类型,取值范围为15-30`s_dept`:所在院系,VARCHAR(50)类型,默认值为'计算机学院'(10分)3.创建`course`表,字段包括:`c_id`:课程编号,INT类型,主键,自增`c_name`:课程名称,VARCHAR(30)类型,非空,唯一`c_credit`:课程学分,INT类型,取值范围为1-5(5分)4.创建`sc`表,字段包括:`s_id`:学生学号,INT类型`c_id`:课程编号,INT类型`score`:成绩,DECIMAL(5,1)类型,取值范围为0-100要求`s_id`和`c_id`作为联合主键,且分别作为外键关联`student`表的`s_id`和`course`表的`c_id`(5分)参考答案:1.创建数据库:```sqlCREATEDATABASEIFNOTEXISTSschool;USEschool;```2.创建student表:```sqlCREATETABLEstudent(s_idINTPRIMARYKEYAUTO_INCREMENT,s_nameVARCHAR(20)NOTNULL,s_genderCHAR(1)CHECK(s_genderIN('男','女')),s_ageINTCHECK(s_ageBETWEEN15AND30),s_deptVARCHAR(50)DEFAULT'计算机学院');```3.创建course表:```sqlCREATETABLEcourse(c_idINTPRIMARYKEYAUTO_INCREMENT,c_nameVARCHAR(30)NOTNULLUNIQUE,c_creditINTCHECK(c_creditBETWEEN1AND5));```4.创建sc表:```sqlCREATETABLEsc(s_idINT,c_idINT,scoreDECIMAL(5,1)CHECK(scoreBETWEEN0AND100),PRIMARYKEY(s_id,c_id),FOREIGNKEY(s_id)REFERENCESstudent(s_id)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(c_id)REFERENCEScourse(c_id)ONDELETECASCADEONUPDATECASCADE);```解析:`IFNOTEXISTS`避免重复创建数据库报错;CHECK约束用于限制字段取值范围;联合主键通过`PRIMARYKEY(s_id,c_id)`设置;外键约束中`ONDELETECASCADE`和`ONUPDATECASCADE`表示当主表记录被删除或更新时,子表关联记录自动删除或更新,保证数据一致性。(二)数据操作(20分)基于上述创建的三张表,完成以下数据操作:1.向`student`表插入以下3条记录:学号1,姓名'张三',性别'男',年龄20,所在院系'电子工程学院'学号2,姓名'李四',性别'女',年龄19,所在院系默认学号3,姓名'王五',性别'男',年龄21,所在院系'机械工程学院'(6分)2.向`course`表插入以下3条记录:课程编号1,课程名称'数据库原理',学分3课程编号2,课程名称'Python编程',学分4课程编号3,课程名称'高等数学',学分5(6分)3.向`sc`表插入以下记录:学号1,课程编号1,成绩92.5学号1,课程编号2,成绩85.0学号2,课程编号1,成绩78.0学号3,课程编号3,成绩90.0(4分)4.将`student`表中姓名为'张三'的学生年龄修改为21,所在院系修改为'计算机学院'(4分)参考答案:1.插入student表记录:```sqlINSERTINTOstudent(s_id,s_name,s_gender,s_age,s_dept)VALUES(1,'张三','男',20,'电子工程学院'),(2,'李四','女',19,DEFAULT),(3,'王五','男',21,'机械工程学院');```2.插入course表记录:```sqlINSERTINTOcourse(c_id,c_name,c_credit)VALUES(1,'数据库原理',3),(2,'Python编程',4),(3,'高等数学',5);```3.插入sc表记录:```sqlINSERTINTOsc(s_id,c_id,score)VALUES(1,1,92.5),(1,2,85.0),(2,1,78.0),(3,3,90.0);```4.修改学生信息:```sqlUPDATEstudentSETs_age=21,s_dept='计算机学院'WHEREs_name='张三';```解析:插入记录时可使用DEFAULT关键字调用字段默认值;多记录插入可通过一条INSERT语句完成,提高效率;UPDATE语句需通过WHERE子句精准定位要修改的记录,避免误改其他数据。(三)查询操作(25分)基于上述三张表中的数据,完成以下查询:1.查询所有学生的姓名、年龄和所在院系,并按年龄从大到小排序(4分)2.查询选修了'数据库原理'课程的学生姓名和成绩(5分)3.查询每个学生的姓名、选修课程的数量和平均成绩,要求只显示平均成绩大于80分的学生(6分)4.查询没有选修任何课程的学生姓名和所在院系(5分)5.查询所有课程的课程名称、选修人数和最高成绩(5分)参考答案:1.查询学生基本信息并排序:```sqlSELECTs_name,s_age,s_deptFROMstudentORDERBYs_ageDESC;```2.查询选修'数据库原理'的学生姓名和成绩:```sqlSELECTs.s_name,sc.scoreFROMstudentsJOINscONs.s_id=sc.s_idJOINcoursecONsc.c_id=c.c_idWHEREc.c_name='数据库原理';```3.查询学生选修课程数量和平均成绩:```sqlSELECTs.s_name,COUNT(sc.c_id)AScourse_count,AVG(sc.score)ASavg_scoreFROMstudentsLEFTJOINscONs.s_id=sc.s_idGROUPBYs.s_id,s.s_nameHAVINGAVG(sc.score)>80;```4.查询未选修课程的学生:```sqlSELECTs.s_name,s.s_deptFROMstudentsLEFTJOINscONs.s_id=sc.s_idWHEREsc.s_idISNULL;```5.查询课程的选修人数和最高成绩:```sqlSELECTc.c_name,COUNT(sc.s_id)ASstudent_count,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保险AI伦理规范-第15篇
- 交易行为多模态分析
- 2026年陕西省榆林市网格员招聘笔试备考试题及答案详解
- 2026年武汉市江夏区住房和城乡建设局人员招聘笔试备考试题及答案详解
- 2026年太原市尖草坪区住房和城乡建设局人员招聘考试备考题库及答案详解
- 2026辽宁锦州古塔区公益性岗位招聘1人笔试模拟试题及答案详解
- 2026年伊春市乌马河区住房和城乡建设局人员招聘笔试备考题库及答案详解
- 2026年晋中市榆次区住房和城乡建设局人员招聘考试备考题库及答案详解
- 2026年贵阳市外贸发展集团有限公司(第二批)公开招聘考试备考题库及答案详解
- 2026四川甘孜州九龙县县属国有企业财务总监招聘1人考试备考题库及答案详解
- DB11T 1598.11-2021 居家养老服务规范 第11部分:服务满意度测评
- 新规防烟排烟计算表
- GB 4343.1-2024家用电器、电动工具和类似器具的电磁兼容要求第1部分:发射
- 职业技术学院民俗管理与运营《民宿产品创新开发》课程标准
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 10kV开闭所、箱变、配电室设备巡视统一标准化作业指导说明书
- (高清版)TDT 1040-2013 土地整治项目制图规范
- 医院筹备方案
- JB T 7689-2012悬挂式电磁除铁器
- 手术室宫腔镜护理查房
- 蓝白锌钝化电镀液安全系数说明书样例MSDS
评论
0/150
提交评论