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

下载本文档

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

文档简介

2025年计算机二级MySQL信息检索试题及答案一、选择题1.在MySQL中,以下哪个关键字用于从表中检索数据?()A.INSERTB.UPDATEC.DELETED.SELECT答案:D解析:INSERT用于插入数据,UPDATE用于修改数据,DELETE用于删除数据,而SELECT用于从表中检索数据。2.假设存在一个名为`students`的表,包含`student_id`(学生ID)、`student_name`(学生姓名)、`age`(年龄)等字段,要检索年龄大于20岁的学生姓名,以下SQL语句正确的是()。A.SELECTstudent_nameFROMstudentsWHEREage>20;B.SELECTstudent_name,ageFROMstudentsWHEREage>20;C.SELECTstudent_nameFROMstudentsHAVINGage>20;D.SELECTstudent_nameFROMstudentsWHENage>20;答案:A解析:WHERE子句用于在FROM子句指定的表中筛选满足条件的行,本题要求检索年龄大于20岁的学生姓名,所以A选项正确。B选项虽然也能筛选出符合条件的行,但多检索了age字段;HAVING子句通常用于分组后的筛选,C选项错误;SQL中没有WHEN这样的关键字用于筛选条件,D选项错误。3.若有一个`orders`表,包含`order_id`(订单ID)、`customer_id`(客户ID)、`order_date`(订单日期)、`total_amount`(订单总金额)字段,要检索2024年1月1日之后的订单ID和订单总金额,以下SQL语句正确的是()。A.SELECTorder_id,total_amountFROMordersWHEREorder_date>'20240101';B.SELECTorder_id,total_amountFROMordersWHEREorder_date>='20240101';C.SELECTorder_id,total_amountFROMordersHAVINGorder_date>'20240101';D.SELECTorder_id,total_amountFROMordersWHENorder_date>'20240101';答案:A解析:WHERE子句用于筛选行,要检索2024年1月1日之后(不包含1月1日当天)的订单信息,使用`>`操作符,所以A选项正确。B选项是大于等于,包含了1月1日当天;C选项HAVING子句使用错误;D选项WHEN关键字错误。4.在MySQL中,以下哪个通配符可以匹配任意单个字符?()A.B.%C._D.?答案:C解析:在MySQL中,`%`通配符可以匹配任意长度的字符串(包括空字符串),`_`通配符可以匹配任意单个字符。``不是MySQL中的通配符,`?`也不是MySQL用于模式匹配的通配符。5.有一个`products`表,包含`product_id`(产品ID)、`product_name`(产品名称)、`price`(价格)字段,要检索产品名称以“手机”开头的产品ID和价格,以下SQL语句正确的是()。A.SELECTproduct_id,priceFROMproductsWHEREproduct_nameLIKE'手机';B.SELECTproduct_id,priceFROMproductsWHEREproduct_nameLIKE'手机%';C.SELECTproduct_id,priceFROMproductsWHEREproduct_nameLIKE'手机_';D.SELECTproduct_id,priceFROMproductsWHEREproduct_nameLIKE'手机?';答案:B解析:使用LIKE关键字进行模式匹配,要匹配以“手机”开头的产品名称,应使用`%`通配符,所以B选项正确。A选项中``不是MySQL通配符;C选项`_`只能匹配单个字符;D选项`?`不是MySQL通配符。6.假设`employees`表中有`employee_id`(员工ID)、`department_id`(部门ID)、`salary`(工资)字段,要检索每个部门的平均工资,以下SQL语句正确的是()。A.SELECTdepartment_id,AVG(salary)FROMemployees;B.SELECTdepartment_id,AVG(salary)FROMemployeesGROUPBYdepartment_id;C.SELECTdepartment_id,AVG(salary)FROMemployeesHAVINGdepartment_id;D.SELECTdepartment_id,AVG(salary)FROMemployeesWHEREdepartment_id;答案:B解析:要计算每个部门的平均工资,需要使用GROUPBY子句按部门ID进行分组,然后使用聚合函数AVG计算平均工资,所以B选项正确。A选项没有分组,无法正确计算每个部门的平均工资;C选项HAVING子句使用错误;D选项WHERE子句不能用于这种分组聚合的计算。7.在上述`employees`表中,要检索平均工资大于5000的部门ID和平均工资,以下SQL语句正确的是()。A.SELECTdepartment_id,AVG(salary)ASavg_salaryFROMemployeesGROUPBYdepartment_idHAVINGavg_salary>5000;B.SELECTdepartment_id,AVG(salary)ASavg_salaryFROMemployeesGROUPBYdepartment_idWHEREavg_salary>5000;C.SELECTdepartment_id,AVG(salary)ASavg_salaryFROMemployeesWHEREAVG(salary)>5000GROUPBYdepartment_id;D.SELECTdepartment_id,AVG(salary)ASavg_salaryFROMemployeesHAVINGAVG(salary)>5000GROUPBYdepartment_id;答案:A解析:在分组后筛选平均工资大于5000的部门,需要使用HAVING子句,并且在SELECT子句中给聚合函数AVG(salary)起别名`avg_salary`以便在HAVING子句中引用,所以A选项正确。B选项WHERE子句不能用于分组后的筛选;C选项WHERE子句位置和使用错误;D选项HAVING子句和GROUPBY子句顺序错误。8.有两个表`customers`(包含`customer_id`、`customer_name`等字段)和`orders`(包含`order_id`、`customer_id`、`order_date`等字段),要检索每个客户的订单数量,以下SQL语句正确的是()。A.SELECTcustomers.customer_id,COUNT(orders.order_id)FROMcustomers,ordersWHEREcustomers.customer_id=orders.customer_idGROUPBYcustomers.customer_id;B.SELECTcustomers.customer_id,COUNT(orders.order_id)FROMcustomersJOINordersONcustomers.customer_id=orders.customer_idGROUPBYcustomers.customer_id;C.SELECTcustomers.customer_id,COUNT(orders.order_id)FROMcustomersINNERJOINordersONcustomers.customer_id=orders.customer_idGROUPBYcustomers.customer_id;D.以上选项都正确答案:D解析:A选项使用了逗号连接两个表(传统的连接方式),并通过WHERE子句指定连接条件,然后分组计算每个客户的订单数量;B选项使用JOIN关键字指定连接,ON子句指定连接条件,再分组计算;C选项使用INNERJOIN(内连接)明确表示连接类型,ON子句指定连接条件,分组计算。这三种方式都是正确的,只是写法上有所不同。9.在上述表结构中,要检索有订单的客户名称,以下SQL语句正确的是()。A.SELECTcustomers.customer_nameFROMcustomersJOINordersONcustomers.customer_id=orders.customer_id;B.SELECTDISTINCTcustomers.customer_nameFROMcustomersJOINordersONcustomers.customer_id=orders.customer_id;C.SELECTcustomers.customer_nameFROMcustomersWHEREEXISTS(SELECT1FROMordersWHEREcustomers.customer_id=orders.customer_id);D.B和C选项都正确答案:D解析:B选项使用JOIN连接两个表,然后通过DISTINCT去除重复的客户名称,能检索出有订单的客户名称;C选项使用EXISTS子查询,子查询中只要存在满足条件(客户ID匹配)的订单记录,主查询就会返回对应的客户名称,也能检索出有订单的客户名称,所以D选项正确。A选项没有去重,可能会返回重复的客户名称。10.假设`books`表有`book_id`(书籍ID)、`book_name`(书籍名称)、`author`(作者)、`price`(价格)字段,要检索价格在50到100之间(包含50和100)的书籍名称和作者,以下SQL语句正确的是()。A.SELECTbook_name,authorFROMbooksWHEREpriceBETWEEN50AND100;B.SELECTbook_name,authorFROMbooksWHEREprice>=50ANDprice<=100;C.SELECTbook_name,authorFROMbooksWHEREprice>=50ORprice<=100;D.A和B选项都正确答案:D解析:A选项使用BETWEEN...AND...操作符可以简洁地表示价格在50到100之间(包含边界值);B选项通过两个比较条件`price>=50ANDprice<=100`也能实现相同的筛选功能,所以A和B选项都正确。C选项使用OR操作符,会筛选出价格小于等于100或者大于等于50的所有记录,不符合要求。11.在`books`表中,要检索作者为“张三”或者“李四”的书籍ID和价格,以下SQL语句正确的是()。A.SELECTbook_id,priceFROMbooksWHEREauthor='张三'ORauthor='李四';B.SELECTbook_id,priceFROMbooksWHEREauthorIN('张三','李四');C.A和B选项都正确D.SELECTbook_id,priceFROMbooksWHEREauthorLIKE'张三'ORauthorLIKE'李四';答案:C解析:A选项使用OR操作符分别判断作者是否为“张三”或者“李四”;B选项使用IN操作符,指定作者在给定的列表(“张三”,“李四”)中,这两种方式都能正确筛选出作者为“张三”或者“李四”的书籍ID和价格,所以A和B选项都正确。D选项LIKE用于模式匹配,这里不需要模式匹配,直接比较作者名称即可,所以D选项错误。12.假设`students`表有`student_id`、`student_name`、`gender`(性别)、`score`(成绩)字段,要检索男生中成绩排名前10的学生ID和成绩,以下SQL语句正确的是()。A.SELECTstudent_id,scoreFROMstudentsWHEREgender='男'ORDERBYscoreDESCLIMIT10;B.SELECTstudent_id,scoreFROMstudentsWHEREgender='男'LIMIT10ORDERBYscoreDESC;C.SELECTstudent_id,scoreFROMstudentsWHEREgender='男'GROUPBYscoreDESCLIMIT10;D.SELECTstudent_id,scoreFROMstudentsWHEREgender='男'HAVINGscoreLIMIT10;答案:A解析:首先使用WHERE子句筛选出男生记录,然后使用ORDERBY子句按成绩降序排列,最后使用LIMIT子句限制只返回前10条记录,所以A选项正确。B选项LIMIT和ORDERBY子句顺序错误;C选项GROUPBY子句使用错误,这里不需要分组;D选项HAVING子句使用错误。13.在MySQL中,以下哪个函数可以用于获取当前日期?()A.CURDATE()B.NOW()C.SYSDATE()D.以上函数都可以答案:D解析:CURDATE()函数返回当前日期(只有日期部分);NOW()函数返回当前日期和时间;SYSDATE()函数也返回当前日期和时间,在某些情况下它们的行为略有差异,但都可以用于获取当前日期相关信息,所以以上函数都可以。14.有一个`sales`表,包含`sale_id`(销售ID)、`product_id`(产品ID)、`sale_date`(销售日期)、`quantity`(销售数量)字段,要检索每个月的销售总数量,以下SQL语句正确的是()。A.SELECTMONTH(sale_date)ASmonth,SUM(quantity)AStotal_quantityFROMsalesGROUPBYMONTH(sale_date);B.SELECTYEAR(sale_date)ASyear,MONTH(sale_date)ASmonth,SUM(quantity)AStotal_quantityFROMsalesGROUPBYYEAR(sale_date),MONTH(sale_date);C.A和B选项都可以D.以上选项都不正确答案:B解析:A选项只按月份分组,可能会在不同年份的相同月份数据统计上出现混淆。B选项同时按年份和月份分组,能准确统计每个月(跨年份)的销售总数量,所以B选项正确。15.在上述`sales`表中,要检索2024年每个月的销售总金额(假设还有一个`price`字段表示产品价格,销售总金额=销售数量价格),以下SQL语句正确的是()。A.SELECTMONTH(sale_date)ASmonth,SUM(quantityprice)AStotal_amountFROMsalesWHEREYEAR(sale_date)=2024GROUPBYMONTH(sale_date);B.SELECTYEAR(sale_date)ASyear,MONTH(sale_date)ASmonth,SUM(quantityprice)AStotal_amountFROMsalesWHEREYEAR(sale_date)=2024GROUPBYYEAR(sale_date),MONTH(sale_date);C.SELECTMONTH(sale_date)ASmonth,SUM(quantity)AVG(price)AStotal_amountFROMsalesWHEREYEAR(sale_date)=2024GROUPBYMONTH(sale_date);D.以上选项都不正确答案:B解析:首先使用WHERE子句筛选出2024年的销售记录,然后同时按年份和月份分组,使用聚合函数SUM计算销售总金额(销售数量乘以价格),所以B选项正确。A选项只按月份分组,可能会在不同年份的相同月份数据统计上出现混淆;C选项计算销售总金额的方式错误,不能用平均价格乘以销售数量总和。二、操作题(一)表结构及数据准备创建一个名为`school`的数据库,在该数据库中创建以下两个表:1.`students`表:```sqlCREATETABLEstudents(student_idINTPRIMARYKEYAUTO_INCREMENT,student_nameVARCHAR(50)NOTNULL,genderENUM('男','女')NOTNULL,ageINT,class_idINT);```2.`classes`表:```sqlCREATETABLEclasses(class_idINTPRIMARYKEYAUTO_INCREMENT,class_nameVARCHAR(50)NOTNULL);```向`students`表插入以下数据:```sqlINSERTINTOstudents(student_name,gender,age,class_id)VALUES('张三','男',18,1),('李四','女',19,1),('王五','男',20,2),('赵六','女',18,2),('孙七','男',19,3);```向`classes`表插入以下数据:```sqlINSERTINTOclasses(class_name)VALUES('一班'),('二班'),('三班');```(二)检索操作1.检索所有学生的姓名和性别。答案:```sqlSELECTstudent_name,genderFROMstudents;```2.检索年龄大于18岁的学生的姓名、年龄和所在班级ID。答案:```sqlSELECTstudent_name,age,class_idFROMstudentsWHEREage>18;```3.检索每个班级的学生人数。答案:```sqlSELECTclasses.class_name,COUNT(students.student_id)ASstudent_countFROMclassesLEFTJOINstudentsONclasses.class_id=students.class_idGROUPBYclasses.class_id;```4.检索女生中年龄最大的学生的姓名、年龄和所在班级名称。答案:```sqlSELECTs.student_name,s.age,c.class_nameFROMstudentssJOINclassescONs.class_id=c.class_idWHEREs.gender='女'ANDs.age=(SELECTMAX(age)FROMstudentsWHEREgender='女');```5.检索没有学生的班级名称。答案:```sqlSELECTclass_nameFROMclassesLEFTJOINstudentsONclasses.class_id=students.class_idWHEREstudents.student_idISNULL;```6.检索每个班级年龄最小的学生的姓名、年龄和班级名称。答案:```sqlSELECTs.student_name,s.age,c.class_nameFROMstudentssJOINclassescONs.class_id=c.class_idJOIN(SELECTclass_id,MIN(age)ASmin_ageFROMstudentsGROUPBYclass_id)subONs.class_id=sub.class_idANDs.age=sub.min_age;```7.检索年龄在18到20岁(包含18和20岁)之间的学生,按班级ID升序排列,同班级内按年龄降序排列。答案:```sqlSELECTstudent_name,age,class_idFROMstudentsWHEREageBETWEEN18AND20ORDERBYclass_idASC,ageDESC;```8.检索每个班级的平均年龄,保留两位小数。答案:```sqlSELECTclass_name,ROUND(AVG(age),2)ASavg_ageFROMclassesJOINstudentsONclasses.class_id=students.class_idGROUPBYclasses.class_id;```9.检索有3名及以上学生的班级名称。答案:```sqlSELECTclass_nameFROMclassesJOINstudentsONclasses.class_id=students.class_idGROUPBYclasses.class_idHAVINGCOUNT(students.student_id)>=3;```10.检索学生姓名中包含“三”字的学生的姓名、性别和年龄。答案:```sqlSELECTstudent_name,gender,ageFROMstudentsWHEREstudent_nameLIKE'%三%';```三、综合题(一)背景有一个电商数据库,包含以下几个主要表:1.`customers`表:存储客户信息,字段有`customer_id`(客户ID,主键)、`customer_name`(客户姓名)、`email`(客户邮箱)、`phone`(客户电话)。2.`products`表:存储产品信息,字段有`product_id`(产品ID,主键)、`product_name`(产品名称)、`category_id`(产品类别ID)、`price`(产品价格)、`stock`(库存数量)。3.`orders`表:存储订单信息,字段有`order_id`(订单ID,主键)、`customer_id`(客户ID)、`order_date`(订单日期)、`total_amount`(订单总金额)。4.`order_items`表:存储订单详情信息,字段有`order_item_id`(订单详情ID,主键)、`order_id`(订单ID)、`product_id`(产品ID)、`quantity`(购买数量)。5.`categories`表:存储产品类别信息,字段有`category_id`(类别ID,主键)、`category_name`(类别名称)。(二)问题及解答1.检索购买了“手机”产品的客户姓名和电话。答案:```sqlSELECTc.customer_name,c.phoneFROMcustomerscJOINordersoONc.customer_id=o.customer_idJOINorder_itemsoiONo.order_id=oi.order_idJOINproductspONduct_id=duct_idWHEREduct_name='手机';```2.检索每个客户的总订单金额,按总订单金额降序排列。答案:```sqlSELECTc.customer_name,SUM(o.total_amount)AStotal_order_amountFROMcustomerscLEFTJOINordersoONc.customer_id=o.customer_idGROUPBYc.customer_idORDERBYtotal_order_amountDESC;```3.检索库存数量为0的产品名称和所属类别名称。答案:```sqlSELECTduct_name,cat.category_nameFROMproductspJOINcategoriescatONp.category_id=cat.category_idWHEREp.stock=0;```4.检索2024年12月有订单的客户邮箱。答案:```sqlSELECTc.emailFROMcustomerscJOINordersoONc.customer_id=o.customer_idWHEREYEAR(o.order_date)=2024ANDMONTH(o.order_date)=12;```5.检索每个产品类别中最畅销(购买数量最多)的产品名称和销售数量。答案:```sqlSELECTcat.category_name,duct_name,sub.max_quantityFROMcategoriescatJOINproductspONcat.category_id=p.category_idJOIN(SELECTproduct_id,MAX(quantity)ASmax_quantityFROMorder_itemsGROUPBYproduct_id)subONduct_id=duct_id;```6.检索购买了超过5

温馨提示

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

评论

0/150

提交评论