2025年sql基础考试题及答案_第1页
2025年sql基础考试题及答案_第2页
2025年sql基础考试题及答案_第3页
2025年sql基础考试题及答案_第4页
2025年sql基础考试题及答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

2025年sql基础考试题及答案一、单项选择题(每题2分,共20分)1.以下哪条SQL语句属于数据定义语言(DDL)?A.UPDATEstudentsSETage=20WHEREid=101B.CREATETABLEcourses(course_idINTPRIMARYKEY,course_nameVARCHAR(50))C.SELECTFROMemployeesWHEREsalary>5000D.DELETEFROMordersWHEREorder_date<'2024-01-01'答案:B2.在SQL中,若要查询“学生表”中姓“张”且名字长度为2个汉字的学生,正确的WHERE子句是?A.WHEREnameLIKE'张%'B.WHEREnameLIKE'张_'C.WHEREnameLIKE'张??'D.WHEREnameLIKE'张__'(注:数据库字符集为UTF-8)答案:D(UTF-8中每个汉字占3字节,但LIKE的下划线“_”匹配单个字符,因此需两个下划线匹配两个汉字)3.关于UNION和UNIONALL的描述,正确的是?A.UNION会自动去重,UNIONALL不会B.UNIONALL会自动排序,UNION不会C.两者都要求结果集列数相同,但UNIONALL允许列类型不同D.UNION只能合并两个结果集,UNIONALL可以合并多个答案:A4.若表“sales”包含字段sale_id(主键)、sale_date(日期)、amount(金额),要查询2024年每个月的总销售额,正确的GROUPBY子句是?A.GROUPBYYEAR(sale_date)B.GROUPBYMONTH(sale_date)C.GROUPBYYEAR(sale_date),MONTH(sale_date)D.GROUPBYDATE_FORMAT(sale_date,'%Y-%m')答案:C(需同时按年、月分组,避免跨年度月份数据混淆)5.以下关于NULL值的描述,错误的是?A.NULL表示“未知”或“不存在”,与空字符串不同B.使用“=”无法判断NULL值,需用ISNULL或ISNOTNULLC.对包含NULL的列使用COUNT()会统计NULL值,而COUNT(列名)不会D.SUM(amount)计算时会忽略NULL值,因此结果可能不准确答案:D(SUM函数自动忽略NULL值,结果为有效数值的和,是准确的)6.若要为表“employees”的“email”列添加唯一约束,正确的语句是?A.ALTERTABLEemployeesADDCONSTRAINTunique_emailUNIQUE(email)B.ALTERTABLEemployeesADDUNIQUECONSTRAINTunique_email(email)C.ALTERTABLEemployeesADDCONSTRAINTunique_emailCHECK(emailISUNIQUE)D.ALTERTABLEemployeesSETUNIQUE(email)答案:A7.执行“SELECT1UNIONSELECTNULL”的结果是?A.1行,值为1(NULL被自动转换为1)B.2行,分别为1和NULLC.1行,值为NULL(1被转换为NULL)D.报错(数据类型不匹配)答案:B(UNION允许不同值合并,NULL视为有效行)8.表“products”有字段product_id(主键)、category(类别)、price(价格),要查询每个类别中价格第二高的产品,最优的方法是?A.使用子查询先按类别分组,再用LIMIT1OFFSET1B.使用窗口函数ROW_NUMBER()按类别分区排序后取排名2的记录C.使用自连接比较同一类别内的价格D.使用MAX()函数嵌套查询答案:B(窗口函数更高效且逻辑清晰)9.关于事务的隔离级别,以下描述正确的是?A.READUNCOMMITTED会导致脏读,但不会出现不可重复读B.REPEATABLEREAD可以避免脏读和不可重复读,但可能出现幻读C.SERIALIZABLE是最高隔离级别,性能最好D.READCOMMITTED是MySQL的默认隔离级别答案:B(MySQL默认隔离级别是REPEATABLEREAD)10.若要将表“users”中“last_login”字段的默认值设置为当前时间,正确的语句是?A.ALTERTABLEusersALTERCOLUMNlast_loginSETDEFAULTNOW()B.ALTERTABLEusersMODIFYlast_loginDATETIMEDEFAULTCURRENT_TIMESTAMPC.ALTERTABLEusersCHANGElast_loginlast_loginDATETIMEDEFAULT'NOW'D.ALTERTABLEusersUPDATElast_loginSETDEFAULTCURRENT_TIMESTAMP答案:B(CURRENT_TIMESTAMP是标准SQL中表示当前时间的关键字)二、填空题(每空2分,共20分)1.SQL中,用于限制查询结果返回行数的关键字是______(MySQL)或______(SQLServer)。答案:LIMIT;TOP2.若表“scores”包含字段student_id、course_id、score,要查询每门课程的平均分并按平均分降序排列,SQL语句为:SELECTcourse_id,______(score)ASavg_scoreFROMscores______BYcourse_idORDERBYavg_scoreDESC;答案:AVG;GROUP3.外键约束的作用是保证______完整性,其关联的字段必须是主表的______或唯一约束字段。答案:引用;主键4.在SQL中,使用______语句可以删除表的结构和数据,而______语句仅删除表的数据,保留结构。答案:DROPTABLE;TRUNCATETABLE5.窗口函数的语法中,用于定义数据分区的关键字是______,用于指定排序的关键字是______。答案:PARTITIONBY;ORDERBY三、简答题(每题6分,共30分)1.简述内连接(INNERJOIN)和左连接(LEFTJOIN)的区别,并举例说明。答案:内连接仅返回两个表中满足连接条件的记录,左连接返回左表的所有记录,右表中无匹配的字段用NULL填充。例如,左表“students”有学生A、B,右表“scores”有A的成绩,无B的成绩:内连接仅返回A的记录,左连接返回A(带成绩)和B(成绩NULL)。2.什么是索引?简述索引的优缺点。答案:索引是一种数据结构,用于加速数据库表中数据的查询速度。优点:显著提升查询效率,减少全表扫描;缺点:增加数据插入、更新、删除的时间(需维护索引),占用额外存储空间。3.说明GROUPBY和HAVING的作用及区别。答案:GROUPBY用于将表中数据按指定列分组,通常与聚集函数(如SUM、AVG)配合使用;HAVING用于对分组后的结果进行过滤。区别:WHERE在分组前过滤行,HAVING在分组后过滤组;WHERE不能使用聚集函数,HAVING可以。4.写出事务的ACID特性,并分别解释。答案:原子性(Atomicity):事务中的操作要么全部成功,要么全部回滚;一致性(Consistency):事务执行前后数据库状态保持一致;隔离性(Isolation):多个事务并发执行时互不干扰;持久性(Durability):事务提交后数据永久保存,不受系统故障影响。5.如何优化慢查询?请列举至少3种方法。答案:①为查询条件涉及的字段添加索引;②避免在WHERE子句中对字段进行函数运算(如WHEREYEAR(create_time)=2024);③减少SELECT,只查询需要的字段;④优化嵌套子查询,改用JOIN操作;⑤分析执行计划(EXPLAIN)定位性能瓶颈。四、应用题(共30分)【背景】某学校数据库包含以下表:学生表(students):s_id(学生编号,主键)、s_name(姓名)、s_sex(性别)、s_birth(出生日期)、s_dept(所在院系)课程表(courses):c_id(课程编号,主键)、c_name(课程名)、c_credit(学分)、c_teacher(授课教师)成绩表(score):s_id(学生编号,外键)、c_id(课程编号,外键)、s_score(成绩)、s_term(学期,如'2023-2024-1'表示2023-2024学年第一学期)请根据以上表结构,写出满足以下需求的SQL语句。1.(5分)查询“计算机科学与技术”院系中,2005年1月1日以后出生的女生信息,按出生日期降序排列。答案:SELECTs_id,s_name,s_birthFROMstudentsWHEREs_dept='计算机科学与技术'ANDs_sex='女'ANDs_birth>'2005-01-01'ORDERBYs_birthDESC;2.(6分)查询“高等数学”课程的所有学提供绩,要求显示学生姓名、成绩,结果按成绩降序排列(若成绩相同,按姓名升序排列)。答案:SELECTs.s_name,sc.s_scoreFROMstudentssJOINscorescONs.s_id=sc.s_idJOINcoursescONsc.c_id=c.c_idWHEREc.c_name='高等数学'ORDERBYsc.s_scoreDESC,s.s_nameASC;3.(7分)统计各院系学生人数,显示院系名称和人数,仅统计人数超过50人的院系,结果按人数降序排列。答案:SELECTs_deptAS院系名称,COUNT()AS人数FROMstudentsGROUPBYs_deptHAVINGCOUNT()>50ORDERBY人数DESC;4.(6分)查询2023-2024学年第一学期(s_term='2023-2024-1')每门课程的平均分、最高分和最低分,显示课程名、平均分(保留2位小数)、最高分、最低分。答案:SELECTc.c_name,ROUND(AVG(sc.s_score),2)AS平均分,MAX(sc.s_score)AS最高分,MIN(sc.s_score)AS最低分FROMcoursescJOINscorescONc.c_id=sc.c_idWHEREsc.s_t

温馨提示

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

评论

0/150

提交评论