《2022年数据库sql查询语句练习_习题_结果收集 .pdf》由会员分享,可在线阅读,更多相关《2022年数据库sql查询语句练习_习题_结果收集 .pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class) Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno) Score (no, cno, degree) 其中表中包含如下数据:Course表:Score表:Student 表:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - -
2、- - Teacher表:根据上面描述完成下面问题:(注意:注意保存脚本,尤其是DDL 和DML ,以便进行数据还原)DDL 1.写出上述表的建表语句。命令:createtableStudent( noint, namevarchar( 14 ),sexvarchar( 2),birthdaydate , classint); createtableTeacher( no int, name varchar( 14 ), sexvarchar( 2), birthdaydate , profvarchar( 10 ), departvarchar( 10 ); createtableCours
3、e( cnovarchar( 8),cnamevarchar( 14 ), tnoint); createtableScore( noint, cnovarchar( 8), degreeint);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - - DML 2.给出相应的 INSERT 语句来完成题中给出数据的插入。命令:insertintoStudentvalues( 5001 , 李勇 , 男 , 1987-7-22, 950
4、01 ); insertintoStudentvalues( 5002 , 刘晨 , 女 , 1987-11-15, 95002 ); insertintoStudentvalues( 5003 , 王敏 , 女 , 1987-10-5, 95001 ); insertintoStudentvalues( 5004 , 李好尚 , 男 , 1987-9-25, 95003 ); insertintoStudentvalues( 5005 , 李军 , 男 , 1987-7-17, 95004 ); insertintoStudentvalues( 5006 , 范新位 , 女 , 1987-6
5、-18, 95005 ); insertintoStudentvalues( 5007 , 张霞东 , 女 , 1987-8-29, 95006 ); insertintoStudentvalues( 5008 , 赵薇 , 男 , 1987-6-15, 95007 ); insertintoStudentvalues( 5009 , 钱民将 , 女 , 1987-6-23, 95008 ); insertintoStudentvalues( 5010 , 孙俪 , 女 , 1987-9-24, 95002 ); insertintoStudentvalues( 108 , 赵里 , 男 ,
6、1987-6-15, 95007 ); insertintoStudentvalues( 109 , 丘处机 , 男 , 1987-6-23, 95008 ); insertintoStudentvalues( 107 , 杨康 , 男 , 1987-9-24, 95001 ); insertintoTeachervalues( 1, 李卫 , 男 , 1957-11-5, 教授 , 电子工程系 ); insertintoTeachervalues( 2, 刘备 , 男 , 1967-10-9, 副教授 , math); insertintoTeachervalues( 3, 关羽 , 男 ,
7、 1977-9-20, 讲师 , sc); insertintoTeachervalues( 4, 李修 , 男 , 1957-6-25, 教授 , elec); insertintoTeachervalues( 5, 诸葛亮 , 男 , 1977-6-15, 教授 , 计算机系 ); insertintoTeachervalues( 6, 殷素素 , 女 , 1967-1-5, 副教授 , sc); insertintoTeachervalues( 7, 周芷若 , 女 , 1947-2-23, 教授 , sc); insertintoTeachervalues( 8, 赵云 , 男 , 1
8、980-6-13, 副教授 , 计算机系 ); insertintoTeachervalues( 9, 张敏 , 女 , 1985-5-5, 助教 , sc); insertintoTeachervalues( 10 , 黄蓉 , 女 , 1967-3-22, 副教授 , sc); insertintoTeachervalues( 11 , 张三 , 男 , 1967-3-22, 副教授 , sc); insertintoCoursevalues( 3-101, 数据库 , 1); insertintoCoursevalues( 5-102, 数学 , 2); insertintoCourse
9、values( 3-103, 信息系统 , 3); insertintoCoursevalues( 3-104, 操作系统 , 4); insertintoCoursevalues( 3-105, 数据结构 , 5); insertintoCoursevalues( 3-106, 数据处理 , 5); insertintoCoursevalues( 4-107, pascal语言 , 6); insertintoCoursevalues( 4-108, C+, 7); insertintoCoursevalues( 4-109, java, 8); insertintoCoursevalues
10、( 3-245, 数据挖掘 , 10 ); insertintoCoursevalues( 3-111, 软件工程 , 11 ); insertintoScorevalues( 5001 , 3-105, 69 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - insertintoScorevalues( 5001 , 5-102, 55 ); insertintoScorevalues( 5003 , 4-108, 85
11、 ); insertintoScorevalues( 5004 , 3-105, 77 ); insertintoScorevalues( 5005 , 3-245, 100 ); insertintoScorevalues( 5006 , 3-105, 53 ); insertintoScorevalues( 5003 , 4-109, 45 ); insertintoScorevalues( 5008 , 3-105, 98 ); insertintoScorevalues( 5004 , 4-109, 68 ); insertintoScorevalues( 5010 , 3-105,
12、88 ); insertintoScorevalues( 5003 , 3-105, 98 ); insertintoScorevalues( 5005 , 4-109, 68 ); insertintoScorevalues( 5002 , 3-105, 88 ); insertintoScorevalues( 107 , 3-105, 98 ); insertintoScorevalues( 108 , 4-109, 68 ); insertintoScorevalues( 109 , 3-105, 88 ); insertintoScorevalues( 109 , 4-109, 80
13、); insertintoScorevalues( 107 , 3-111, 88 ); insertintoScorevalues( 5003 , 3-111, 80 ); 单表查询3.以 class降序输出 student 的所有记录( student 表全部属性)命令:select*fromStudentorderbyclassdesc ;4.列出教师所在的单位depart(不重复)。命令:selectdistinctdepartfromTeacher;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
14、- - - - - 第 4 页,共 15 页 - - - - - - - - - 5.列出 student 表中所有记录的name、sex 和 class列命令:selectname , sex , classfromStudent;6.输出 student 中不姓王的同学的姓名。命令:selectname fromStudentexceptselectname fromStudentwherenamelike 王% ; 或selectnamefromStudentwherenamenotlike 王% ;7.输出成绩为85 或 86 或 88 或在 60-80 之间的记录(no,cno,de
15、gree)命令:selectno , cno , DEGREE fromScorewheredegree=85 ordegree=86 ordegree=88 ordegreebetween 60 and 80 ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 15 页 - - - - - - - - - 8.输出班级为95001 或性别为女的同学( student 表全部属性)命令:select*fromStudentwhereclass=95001 orsex = 女
16、 ;9.以 cno 升序、 degree 降序输出score的所有记录。(score表全部属性)命令:select*fromScoreorderbycnoasc , degreedesc ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 15 页 - - - - - - - - - 10.输出男生人数及这些男生分布在多少个班级中命令:selectCOUNT(*),count( distinctclass)fromStudentwheresex =男 ;11. 列出存在有
17、85分以上成绩的课程编号。命令:selectdistinctcnofromScorewheredegree85 ;12.输出 95001 班级的学生人数命令:selectCOUNT(*)fromStudentwhereclass=95001 ;13.输出 3-105号课程的平均分命令:selectavg ( cast( degreeas float)fromScorewherecno =3-105;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 15 页 - - - -
18、- - - - - 14.输出 student 中最大和最小的birthday 日期值命令:selectMAX( birthday), MIN ( birthday)fromStudent;15.显示 95001 和 95004 班全体学生的全部个人信息(不包括选课)。 (student表全部属性)命令:select*fromStudentwhereclass=95001 orclass=95004 ;聚合查询16.输出至少有5 个同学选修的并以3 开头的课程的课程号,课程平均分, 课程最高分, 课程最低分。命令:selectcno , avg ( cast( degreeas float),
19、MAX( degree), MIN ( degree)fromScorewherecnolike3%groupbycnohavingCOUNT( cno ) 5;或者:selectcno , AVG( cast( DEGREE asfloat),MAX( degree), MIN ( DEGREE)fromScoregroupbycnohavingCOUNT( cno )= 5 andcnolike3%17.输出所选修课程中最低分大于70 分且最高分小于90 分的学生学号及学生姓名命 令 :selectStudent. no , namefromStudentjoinScoreonStuden
20、t. no =Score. nogroupbyStudent. no , namehavingMAX( Score. degree) 70;18.显示所教课程选修人数多于5 人的教师姓名命令:selectnamefromTeacherjoinCourseonTeacher. no =Course. tnowhereCourse. cnoin(selectcnofromScoregroupbycnohavingCOUNT( Score. cno ) 5);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
21、 - - - 第 8 页,共 15 页 - - - - - - - - - 19.输出 95001班级所选课程的课程号和平均分命 令 :selectcno , avg ( cast( degreeasfloat)fromScorewherenoin(selectnofromStudentwhereclass=95001 )groupbycno ; 或者:selectcno , AVG( cast( degreeasfloat)fromScorejoinStudentonScore. no =Student. nogroupbycno , classhavingclass=9500120. 输出
22、至少有两名男同学的班级编号。命令:selectclassfromStudentwheresex = 男groupbyclasshavingCOUNT( class)= 2;或者:selecta. classfrom ( select*fromStudentwheresex = 男 )a groupbya. classhavingCOUNT( a. class)= 2多表查询21.列出与 108 号同学同年出生的所有学生的学号、姓名和生日命 令 :selectno , name , birthdayfromStudentwhereyear ( birthday)=( selectyear( bi
23、rthday)fromStudentwhereno =108 ); 或者: selectb. no , b. name , b. birthdayfromStudenta joinStudentb ondatediff( YEAR, a. birthday, b. birthday)= 0 anda. no =10822.列出存在有85 分以上成绩的课程名称命令:selectcnamefromCoursewherecnoin( selectdistinctcnofromScorewheredegree85 );或selectdistinctcnamefromCoursejoinScoreonC
24、ourse. cno =Score. cno名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 15 页 - - - - - - - - - wheredegree85 ;23.列出“计算机系”教师所教课程的成绩表(课程编号,课程名,学生名,成绩)。命令:selectCourse. cno , cname , Student. name , DEGREE fromTeacherjoinCourseonTeacher. no =Course. tnojoinScoreonCou
25、rse. cno =Score . cnojoinStudentonScore. no =Student. nowhereTeacher. depart= 计算机系 ;24.列出所有可能的“计算机系”与“电子工程系”不同职称的教师配对信息,要求输出每个老师的姓名(name)和(职称)命令:selecta. name , a. prof, b. name , b. proffrom ( selectname , prof, departfromTeacherwheredepart= 计算机系 ordepart= 电子工程系 )a join( selectname , prof, departfr
26、omTeacherwheredepart=电 子 工 程 系 ordepart= 计 算 机 系 )bonnota. prof=b. profandnota. depart=b. depart;25. 列出所有处于不同班级中,但具有相同生日的学生,要求输出每个学生的学号 和 姓 名 。 ( 提 示 : 使 用datediff函 数 , 具 体 用 法 可 以 参 考 :http:/ )命令:selecta. no , a. name , b. no , b. namefromStudentajoinStudentbonnota. class=b. classanda. birthday=b.
27、birthday;26.显示张三教师任课的学生姓名,课程名,成绩命令:selectStudent. name , cname , DEGREE fromTeacherjoinCourseonTeacher. no =Course. tnojoinScoreon Course. cno =Score. cno joinStudentonScore. no =Student. nowhereTeacher. name = 张三 ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,
28、共 15 页 - - - - - - - - - 27.列出所讲课已被选修的教师的姓名和系别命 令 :selectdistinctname , departfromTeacherjoinCourseonTeacher. no =Course. tnojoinScoreonCourse. cno =Score. cno ;28. 输出所有学生的 name、no和degree 。 (degree 为空的不输出和为空的输出两种情况) 。命令:selectname , Student. no , DEGREE fromStudentleftjoinScoreonStudent. no =Score.
29、no ; selectname , Student. no , DEGREEfromStudentjoinScoreonStudent. no =Score. no ;29. 列出所有任课教师的 name和depart。 (从课程选修和任课两个角度考虑)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 15 页 - - - - - - - - - 命 令 :selectdistinctname , departfromTeacherjoinCourseonTeacher.
30、 no =Course. tno ; selectdistinctname , departfromTeacherjoinCourseonTeacher. no =Course. tnojoinScoreonCourse. cno =Score. cno ;30. 输出男教师所上课程名称。命令:selectcnamefromTeacherjoinCourseonTeacher. no =Course. tnowhereTeacher. sex = 男 ;31. 出与“李军”同性别的所有同学的name。命令:selectname fromStudentwheresex =( selectsexf
31、romStudentwherename = 李军 );32. 输出选修“数据结构”课程的男同学的成绩。命令:selectDEGREE fromScorejoinStudentonScore. no =Student. nojoinCourseonScore. cno =Course. cnowheresex = 男andcname = 数据名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 15 页 - - - - - - - - - 结构 ;33. 列出选修编号为 3-1
32、05课程并且该门课程成绩比课程3-111的最高分要高的 cno,no和degree。命令:selectCourse. cno , Score. no , DEGREE fromCoursejoinScoreonCourse. cno =Score. cnojoinStudentonScore. no =Student. nowhereCourse. cno =3-105andScore. degree( selectmax ( degree)fromScorewhereScore. cno =3-111);子查询34.输出 score 中成绩最高的学号和课程号命令:selectno , cno
33、 fromScorewheredegreein(selectMAX( degree) fromScore);35.输出选修 3-105 课程, 其成绩高于109 号同学在此课程所得成绩的所有同学的学号,姓名命令:selectStudent. no , namefromStudentjoinScoreonStudent. no=Score. nowhereScore. cno =3-105anddegree( selectdegreefromScorewhereno =109andcno =3-105);36.列出成绩比该课程平均成绩低的同学的学号,成绩和该门课的平均成绩命 令 :selectn
34、o , DEGREE, a. avg_degreefromScorejoin( selectcno , AVG( cast( degreeasfloat)fromScoregroupbycno )a( cno , avg_degree) onScore. cno =a. cnowhereScore. degree( selectMAX( degree)fromScorewherecno =4-109);39.* 列出符合下述条件的所有可能的同学配对(sno1,sname1,sno2,sname2,difference) 。其中要求学号为sno1的 sname1同学的所学课程的平均分大于学号为s
35、no2的 sname2同学的所学课程平均分,两个同学的课程平均分的差值difference 为(sno1 同学平均分 -sno2同学平均分)命令:selecta. no , a. name , b. no , b. name , a. avg_degree- b. avg_degreeasdifferencefrom ( selectStudent. no , name , avg ( degree) fromStudentjoinScoreonStudent. no =Score. nogroupbyStudent. no , name )a( no , name , avg_degree)
36、join( selectStudent. no , name , avg ( degree)fromStudentjoinScoreonStudent. no =Score. nogroupbyStudent. no , name )b( no , name , avg_degree)ona. avg_degreeb. avg_degree;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 15 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 15 页 - - - - - - - - -