还剩11页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库sql语句考试题和答案
一、选择题(本题型共10题,每题2分,共20分)
1.以下哪项不属于SQL的主要功能分类?()A.DDL(数据定义语言)B.DML(数据操纵语言)C.DQL(数据查询语言)D.DTL(数据转换语言)
2.在SQL中,用于创建数据库的命令是?()A.CREATE TABLEB.CREATE DATABASEC.ALTER DATABASED.DROP DATABASE
3.以下哪个不是SQL的常用数据类型?()A.INTB.VARCHAR20C.DATED.ARRAY
4.语句“SELECT*FROM students WHERE age18AND gender=男”的作用是?()A.查询所有学生的年龄和性别B.查询年龄大于18岁且性别为男的学生信息C.查询年龄大于18岁或性别为男的学生信息D.查询学生表中所有字段第1页共13页
5.若要查询学生表中“姓名”列不重复的值,应使用的关键字是?()A.UNIQUEB.DISTINCTC.NO DUPLICATED.UNION
6.SQL中,用于对查询结果进行排序的关键字是?()A.ORDER BYB.GROUP BYC.WHERED.HAVING
7.以下哪个函数用于计算某列的平均值?()A.SUMB.AVGC.MAXD.MIN
8.语句“SELECT name,COUNT*AS课程数量FROM coursesGROUPBY name”的作用是?()A.查询每个课程的名称和数量B.查询每个学生的姓名和选课数量C.查询每个课程的名称和学生数量D.查询每个学生的选课数量
9.关于主键约束,以下说法正确的是?()A.主键列可以为NULLB.一个表可以有多个主键第2页共13页C.主键值在表中必须唯一D.主键只能由一个字段组成
10.SQL中,用于删除表中数据的命令是?()A.DELETEB.DROPC.TRUNCATED.REMOVE
二、填空题(本题型共10题,每题1分,共10分)
1.SQL语言中,用于查询数据的命令是________
2.若要在表中创建一个唯一约束,应使用________关键字
3.语句“INSERT INTOstudents id,name,age VALUES1,张三,20”中,“students”指的是________
4.SQL中,用于修改表结构的命令是________
5.函数________用于获取当前系统日期
6.若要查询“课程表”中“学分”大于3的课程信息,应在WHERE子句中写条件________
7.语句“SELECT*FROM students WHERE age BETWEEN18AND22”等价于“age=18AND age________22”
8.SQL中,用于限制查询结果返回行数的关键字是________
9.外键约束用于确保两个表之间的________关系
10.语句“UPDATE studentsSET age=21WHERE id=1”的作用是将id为1的学生年龄更新为________
三、单表查询题(本题型共10题,每题3分,共30分)第3页共13页
1.写出查询“学生表(students)”中所有年龄大于等于20岁的学生姓名和性别,字段名分别为“姓名”和“性别”,结果按年龄降序排列
2.写出查询“课程表(courses,字段id,name,credit,teacher)”中课程名称包含“数据库”的课程信息,且学分大于等于3的课程,按学分升序排列
3.写出查询“学生表(students,字段id,name,age,gender,major)”中“性别”为“女”且“专业”为“计算机”的学生数量
4.写出查询“学生表(students)”中年龄最小的学生的姓名和年龄
5.写出查询“课程表(courses)”中没有学生选择的课程名称(假设存在“选课表(course_selection,字段id,student_id,course_id,score)”,包含“课程号”字段)
6.写出查询“学生表(students)”中每个专业的平均年龄,结果按平均年龄升序排列,且平均年龄保留一位小数
7.写出查询“学生表(students)”中年龄在19到22岁之间(包含19和22岁),且性别为“男”的学生的id、姓名、年龄,若年龄相同,按id升序排列
8.写出查询“学生表(students)”中姓名以“李”开头的学生的所有信息
9.写出查询“课程表(courses)”中学分最高的课程的课程号和课程名称
10.写出查询“学生表(students)”中不存在重复姓名(即每个姓名只保留一条记录,不考虑id)的学生信息
四、多表连接题(本题型共10题,每题3分,共30分)第4页共13页
1.写出查询“学生表(students,字段id,name)”和“选课表(course_selection,字段student_id,course_id)”的内连接语句,获取所有学生的姓名和他们所选的课程号,连接条件是“students.id=course_selection.student_id”
2.写出查询“学生表(students,id,name,major)”、“选课表(course_selection,student_id,course_id,score)”和“课程表(courses,id,name,credit)”的内连接语句,获取学生姓名、课程名称和成绩,连接条件是“students.id=course_selection.student_id”和“course_selection.course_id=courses.id”,且成绩大于等于60分
3.写出查询“学生表(students)”和“选课表(course_selection)”的左连接语句,获取所有学生的姓名和他们所选的课程号,即使学生没有选课,也显示学生信息,课程号为NULL
4.写出查询“学生表(students)”和“选课表(course_selection)”的右连接语句,获取所有课程的课程号和选择该课程的学生姓名,即使没有学生选择该课程,也显示课程号,学生姓名为NULL
5.写出查询“学生表(students,s)”别名为s、“选课表(course_selection,cs)”别名为cs和“课程表(courses,c)”别名为c的内连接语句,获取学生姓名、课程名称和学分,连接条件是s.id=cs.student_id,cs.course_id=c.id,且学分大于
36.在SQL中,全外连接的关键字是?(),写出查询“学生表(students)”和“选课表(course_selection)”的全外连接语第5页共13页句,获取所有学生和课程的组合,显示学生姓名、课程号,没有对应信息的字段显示NULL
7.写出查询“学生表(students,字段id,name,head_teacher_id)”中“head_teacher_id”字段关联另一个学生的id(即一个学生的班主任是另一个学生)的自连接语句,获取学生姓名和其班主任姓名,别名为“班主任姓名”
8.查询“学生表(students)”中“专业”为“计算机”的学生,以及他们所选的课程名称,以下SQL语句正确的是?()(注内连接/左连接的区别)A.SELECT s.name,c.name FROM students s INNER JOINcourse_selection cs ON s.id=cs.student_id INNER JOIN coursesc ON cs.course_id=c.id WHERE s.major=计算机B.SELECT s.name,c.name FROM students s LEFT JOINcourse_selection csON s.id=cs.student_id LEFT JOIN courses cON cs.course_id=c.id WHERE s.major=计算机C.SELECT s.name,c.name FROM students s RIGHT JOINcourse_selection csON s.id=cs.student_id RIGHTJOIN coursesc ON cs.course_id=c.id WHERE s.major=计算机D.以上都不正确
9.写出查询“学生表(students)左连接于选课表(course_selection),再连接课程表(courses)”的SQL语句,获取所有“数学”专业学生的姓名、课程名称和成绩,若学生没选课或课程不存在,成绩和课程名称显示NULL第6页共13页
10.写出查询“学生表(students)”和“选课表(course_selection)”的交叉连接语句,获取所有学生和所有课程的组合,显示学生姓名和课程号
五、子查询题(本题型共5题,每题4分,共20分)
1.写出查询“课程表(courses)”中,学分大于所有学生平均学分的课程名称和学分(假设通过连接“学生表(students)”和“选课表(course_selection)”可计算每门课程的平均学分)
2.写出查询学生表(students)中年龄大于学生表中平均年龄的学生姓名和年龄
3.写出查询“没有选择任何课程的学生姓名”的SQL语句,使用NOTEXISTS子查询
4.写出查询“与学生id为101的学生年龄相同的学生姓名”的SQL语句,使用标量子查询
5.写出查询“选修了‘数据库原理’这门课程的学生的姓名”的SQL语句,子查询为获取“数据库原理”的课程id
六、数据更新题(本题型共5题,每题2分,共10分)
1.写出向“学生表(students,字段id,name NOTNULL,age,gender,major,admission_date)”插入一条记录的SQL语句,学生id为1001,姓名为“王五”,年龄22,性别“男”,专业“数学”,入学日期“2025-09-01”
2.写出将“学生表(students)”中“专业”为“历史”的学生“专业”更新为“历史学”的SQL语句
3.写出删除“学生表(students)”中年龄小于18岁的学生所有信息的SQL语句第7页共13页
4.写出将“选课表(course_selection)”中学分大于10的课程成绩都加5分的SQL语句通过连接课程表和选课表
5.写出删除“选课表(course_selection)”中成绩为NULL的数据记录(即没有成绩的选课记录)的SQL语句,假设成绩字段为score
七、综合应用题本题型共5题每题5分,共25分
1.根据以下场景写出完整SQL语句某学校有“学生表(students)”(id,name,age,gender,major,admission_date)、“课程表(courses)”(id,name,credit,teacher)、“选课表(course_selection)”(id,student_id,course_id,score,select_date)三个表,要求查询“计算机专业”且“年龄大于20岁(不含20岁)”的学生,他们所选的课程名称、成绩和选课日期,结果按“成绩”降序排列,若成绩相同按选课日期升序排列,且只显示前10条记录
2.根据以下场景写出完整SQL语句查询每个专业学生的平均年龄(保留一位小数)、最大年龄和学生人数,要求平均年龄大于20岁,按平均年龄升序排列,字段名分别为“专业”、“平均年龄”、“最大年龄”、“学生人数”
3.根据以下场景写出完整SQL语句查询“数据库原理Ⅱ”(课程id=101)课程的选课情况,包括学生姓名、学号(id)、成绩,若学生没有选课(即没有该课程的选课记录),显示“未选课”,结果按成绩降序排列,成绩相同按学号升序排列(假设“学生表”和“选课表”已连接)
4.根据以下场景写出完整SQL语句查询“张三”同学所选的所有课程名称及对应学分,以及这些课程的总学分,结果显示字段“学生姓第8页共13页名”、“课程名称”、“学分”、“总学分”(若张三未选课,总学分显示0,“总学分”为该学生所有课程学分的总和),需关联学生表、选课表、课程表
5.根据以下场景写出完整SQL语句查询“选修了‘数据库原理’(id=101)但未选修‘操作系统’(id=102)”的学生姓名,假设存在“学生表(students,id,name)”“选课表(course_selection,student_id学生id,course_id课程id)”“课程表(courses,id,name)”,请写出对应的SQL语句答案汇总
一、选择题答案
1.D
2.B
3.D
4.B
5.B
6.A
7.B
8.C
9.C
10.A
二、填空题答案
1.SELECT
2.UNIQUE
3.表名
4.ALTER TABLE
5.CURDATE
6.credit
37.=
8.LIMIT
9.参照
10.21
三、单表查询题答案
1.SELECT name AS姓名,gender AS性别FROM students WHEREage=20ORDER BY age DESC;
2.SELECT*FROM coursesWHERE nameLIKE%数据库%ANDcredit=3ORDER BY credit ASC;
3.SELECT COUNTFROM students WHERE gender=女AND major=计算机;
4.SELECT name,age FROM students ORDER BYage ASC LIMIT1;
5.SELECT name FROM coursesWHERE id NOT IN SELECT DISTINCTcourse_id FROMcourse_selection;
6.SELECT majorAS专业,ROUNDAVGage,1AS平均年龄FROMstudents GROUP BY majorORDER BY平均年龄ASC HAVING平均年龄20;第9页共13页
7.SELECT id,name,age FROM studentsWHERE ageBETWEEN19AND22AND gender=男ORDER BYageASC,id ASC;
8.SELECT*FROM studentsWHERE nameLIKE李%;
9.SELECT id,name FROM courses ORDER BYcreditDESC LIMIT1;
10.SELECT DISTINCTname,age,gender,major,id FROM students;
四、多表连接题答案
1.SELECT s.name AS姓名,cs.course_id AS课程号FROM studentss INNER JOIN course_selection csON s.id=cs.student_id;
2.SELECT s.name AS学生姓名,c.name AS课程名称,cs.score AS成绩FROM students s INNERJOIN course_selection csON s.id=cs.student_id INNERJOIN coursesc ON cs.course_id=c.idWHERE cs.score=60;
3.SELECT s.name AS姓名,cs.course_id AS课程号FROM studentss LEFT JOIN course_selection csON s.id=cs.student_id;
4.LEFTJOIN(或FULL OUTER JOIN);SELECT s.name AS学生姓名,cs.course_id AS课程号FROM students sRIGHTJOINcourse_selection csON s.id=cs.student_id;
5.SELECT s.name AS学生姓名,c.name AS课程名称,c.credit AS学分FROM studentssINNERJOINcourse_selection csON s.id=cs.student_id INNERJOIN coursesc ON cs.course_id=c.idWHERE c.credit3;
6.FULL OUTERJOIN;SELECT s.name AS学生姓名,cs.course_id AS课程号FROM studentss FULLOUTERJOINcourse_selection csONs.id=cs.student_id;第10页共13页
7.SELECT s.name AS学生姓名,t.name AS班主任姓名FROMstudents sINNERJOINstudents tON s.head_teacher_id=t.id;
8.A
9.SELECT s.name AS学生姓名,c.name AS课程名称,cs.score AS成绩FROM studentssLEFTJOINcourse_selection csON s.id=cs.student_id LEFTJOIN coursesc ONcs.course_id=c.idWHERE s.major=数学;
10.SELECT s.name AS学生姓名,c.id AS课程号FROM studentssCROSS JOIN coursesc;
五、子查询题答案
1.SELECT name AS课程名称,credit AS学分FROM coursesWHEREcreditSELECT AVGcreditFROM coursesc INNERJOINcourse_selection csONc.id=cs.course_id;
2.SELECT name,age FROMstudentsWHEREageSELECT AVGageFROMstudents;
3.SELECT name FROMstudentssWHERENOT EXISTSSELECT*FROMcourse_selection csWHEREs.id=cs.student_id;
4.SELECT nameFROMstudentsWHEREage=SELECT ageFROMstudents WHEREid=101;
5.SELECT s.nameFROMstudentssWHERE EXISTSSELECT*FROMcourse_selection csWHEREs.id=cs.student_id ANDcs.course_id=SELECT id FROMcoursesWHERE name=数据库原理;
六、数据更新题答案第11页共13页
1.INSERT INTOstudents id,name,age,gender,major,admission_date VALUES1001,王五,22,男,数学,2025-09-01;
2.UPDATE studentsSET major=历史学WHERE major=历史;
3.DELETE FROMstudentsWHEREage18;
4.UPDATE course_selection csJOIN coursescONcs.course_id=c.id SETcs.score=cs.score+5WHERE c.credit10;
5.DELETE FROMcourse_selection WHEREscore ISNULL;七综合应用题答案
1.SELECT s.name AS姓名,c.name AS课程名称,cs.score AS成绩,cs.select_date AS选课日期FROMstudentssINNERJOINcourse_selection csON s.id=cs.student_id INNERJOINcourses cONcs.course_id=c.id WHEREs.major=计算机ANDs.age20ORDERBY cs.score DESC,cs.select_date ASCLIMIT10;
2.SELECT majorAS专业,ROUNDAVGage,1AS平均年龄,MAXage AS最大年龄,COUNT AS学生人数FROMstudentsGROUPBY majorHAVING平均年龄20ORDERBY平均年龄ASC;
3.SELECT s.nameAS学生姓名,s.id AS学号,IFNULLcs.score,未选课AS成绩FROMstudentssLEFTJOIN SELECT student_id,score FROMcourse_selection WHEREcourse_id=101csON s.id=cs.student_id ORDERBYcs.score DESC,s.id ASC;
4.SELECT张三AS学生姓名,c.nameAS课程名称,c.credit AS学分,IFNULLSUMc.credit,0AS总学分FROMstudentssLEFT JOINcourse_selection csONs.id=cs.student_id LEFT第12页共13页JOINcoursescONcs.course_id=c.id WHEREs.name=张三GROUPBYc.name,c.credit WITHROLLUP;
5.SELECTs.nameFROMstudentssWHEREs.id INSELECTstudent_id FROMcourse_selection WHEREcourse_id=101ANDs.idNOTINSELECTstudent_idFROMcourse_selection WHEREcourse_id=102;第13页共13页。
个人认证
优秀文档
获得点赞 0