SQL机考试题及详细答案(实战版)_第1页
SQL机考试题及详细答案(实战版)_第2页
SQL机考试题及详细答案(实战版)_第3页
SQL机考试题及详细答案(实战版)_第4页
SQL机考试题及详细答案(实战版)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

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

文档简介

SQL机考试题及详细答案(实战通用版)一、考试说明1.考试环境:通用MySQL数据库,语法适配8.0及以上版本2.答题要求:语句简洁规范,字段、表名命名统一,可直接执行运行出结果3.题库场景:企业常用员工、部门、薪资、订单、学生成绩基础业务表,贴合工作面试、转正、技能考核场景4.所有题目均附带可运行标准答案+分步解析,方便自查纠错二、基础数据表结构(考试默认数据表)1.部门表dept字段:dept_id(部门编号,主键)、dept_name(部门名称)、address(部门地址)2.员工表emp字段:emp_id(员工编号,主键)、emp_name(员工姓名)、gender(性别)、dept_id(部门编号,外键)、entry_time(入职时间)、salary(基本工资)3.订单表orders字段:order_id(订单编号,主键)、emp_id(经手员工编号)、order_money(订单金额)、order_time(下单时间)、order_status(订单状态:0-未完成,1-已完成)三、机考试题+详细答案解析题型一:基础单表查询(每题5分,共20分)题目1:查询所有员工的完整信息标准答案:PlainText

SELECT*FROMemp;解析:*代表查询表中所有字段,FROM指定查询数据表,适用于快速查看全量数据,是最基础的查询语句。题目2:查询所有员工的姓名、入职时间、工资,字段别名分别为:姓名、入职日期、薪资标准答案:PlainText

SELECTemp_nameAS姓名,entry_timeAS入职日期,salaryAS薪资FROMemp;解析:使用AS关键字给字段起中文别名,优化查询结果展示效果,AS关键字可省略,直接空格命名也可生效。题目3:查询所有distinct不重复的员工性别数据标准答案:PlainText

SELECTDISTINCTgenderFROMemp;解析:DISTINCT关键字用于去除查询结果中的重复数据,仅保留唯一值,常用于枚举类字段去重查询。题目4:查询薪资最高的5名员工信息标准答案:PlainText

SELECT*FROMempORDERBYsalaryDESCLIMIT5;解析:ORDERBY字段DESC实现倒序排序(从大到小),LIMIT限制查询结果条数,ASC为正序(默认可省略)。题型二:条件筛选查询(每题6分,共30分)题目5:查询薪资在5000-10000之间的所有员工姓名和薪资标准答案:PlainText

SELECTemp_name,salaryFROMempWHEREsalaryBETWEEN5000AND10000;解析:BETWEEN...AND...用于闭区间范围查询,包含首尾数值,等价于salary>=5000ANDsalary<=10000。题目6:查询部门编号为1、3、5的员工信息标准答案:PlainText

SELECT*FROMempWHEREdept_idIN(1,3,5);解析:IN关键字用于多值匹配查询,适用于固定离散值的条件筛选,比多个OR语句更简洁高效。题目7:查询姓名包含“张”的所有员工信息标准答案:PlainText

SELECT*FROMempWHEREemp_nameLIKE'%张%';解析:LIKE为模糊查询关键字,%为通配符,代表任意任意字符;%张%表示姓名中任意位置包含“张”字。题目8:查询2024年入职的员工信息标准答案:PlainText

SELECT*FROMempWHEREYEAR(entry_time)=2024;解析:YEAR()时间函数可提取日期中的年份,精准筛选指定年份数据,适配标准日期格式字段。题目9:查询薪资为空的员工姓名标准答案:PlainText

SELECTemp_nameFROMempWHEREsalaryISNULL;解析:数据库中NULL值不能用=判断,必须使用ISNULL/ISNOTNULL进行空值、非空值筛选。题型三:分组聚合查询(每题8分,共24分)题目10:统计每个部门的员工人数,展示部门编号和员工数量标准答案:PlainText

SELECTdept_id,COUNT(emp_id)AS员工人数FROMempGROUPBYdept_id;解析:COUNT()为计数函数,统计有效数据行数;GROUPBY按照部门编号分组,实现分组统计,分组字段必须与查询非聚合字段一致。题目11:统计每个部门的平均薪资、最高薪资、最低薪资,平均薪资保留2位小数标准答案:PlainText

SELECTdept_id,ROUND(AVG(salary),2)AS平均薪资,MAX(salary)AS最高薪资,MIN(salary)AS最低薪资FROMempGROUPBYdept_id;解析:AVG平均值、MAX最大值、MIN最小值为常用聚合函数;ROUND(数值,小数位数)用于保留指定小数位数。题目12:统计员工人数大于3人的部门编号和员工数量标准答案:PlainText

SELECTdept_id,COUNT(emp_id)AS员工人数FROMempGROUPBYdept_idHAVINGCOUNT(emp_id)>3;解析:分组后的条件筛选必须使用HAVING,不能用WHERE;WHERE用于分组前筛选数据,HAVING用于分组后筛选分组结果。题型四:联表查询(每题9分,共18分)题目13:查询所有员工的姓名、所属部门名称、薪资(员工表关联部门表)标准答案:PlainText

SELECTe.emp_name,d.dept_name,e.salaryFROMempeLEFTJOINdeptdONe.dept_id=d.dept_id;解析:使用左连接LEFTJOIN,保留所有员工数据,即使员工无对应部门也会展示;给表起别名简化语句书写,ON后为联表关联条件。题目14:查询已完成订单的经手员工姓名、订单金额、下单时间标准答案:PlainText

SELECTe.emp_name,o.order_money,o.order_timeFROMempeINNERJOINordersoONe.emp_id=o.emp_idWHEREo.order_status=1;解析:内连接INNERJOIN只展示两张表中匹配成功的数据;先联表再筛选订单状态,精准匹配有效订单数据。题型五:子查询综合题(8分)题目15:查询薪资高于全体员工平均薪资的员工姓名和薪资标准答案:PlainText

SELECTemp_name,salaryFROMempWHEREsalary>(SELECTAVG(salary)FROMemp);解析:括号内为子查询,先执行子查询算出全体员工平均薪资,再执行外层查询筛选出薪资高于平均值的员工,是经典的单行子查询场景。四、附加实操题(10分,加分项)题目16:编写SQL语句,新建一个学生表student,包含字段:学生id(主键自增)、学生姓名、年龄、性别、入学时间,所有字段非空标准答案:PlainText

CREATETABLEstudent(

stu_idINTPRIMARYKEYAUTO_INCREMENTCOMMENT'学生编号',

stu_nameVARCHAR(20)NOTNULLCOMMENT'学生姓名',

ageINTNOTNULLCOMMENT'学生年龄',

genderVARCHAR(10)NOTNULLCOMMENT'学生性别',

create_timeDATENOTNULLCOMMENT'入学时间'

)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COMMENT='学生信息表';解析:PRIMARYKEY设为主键

温馨提示

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

评论

0/150

提交评论