SQL练习题,MySQL数据库查询语句经典例题练习,附带答案和运行效果截图以供参考
2017-08-04 09:13
781 查看
请按照以下顺序创建这4张表
1.首先
创建student和teacher表
2.其次
创建score成绩表和course课程表
注意:
1.假如student表和teacher表没有创建出来,在创建score表或者course表的时候,当设置外键的时候会提示字段或表不存在。
2.所以需要首先创建出来student和teacher表,在创建score和course表
数据库中共有4张表,每张表的详细情况如下
表格中的数据如下所示:
2、 查询教师所有的单位即不重复的Depart列
3、查询Student表的所有记录
4、查询Score表中成绩在60到80之间的所有记录
5、查询Score表中成绩为85,86或88的所有记录。
6、查询student表中“95031”班或性别为“女”的同学的所有记录
7、以Sclass降序查询student表的所有记录
8、以Cno升序、Degree降序查询score表的所有记录
9、查询“95031”班的学生人数
10、查询score表中的最高分的学生学号和课程号
11、查询每门课的平均成绩和Cno
12、查询score表中至少有5名学生选修的并以3开头的课程的平均分数
13、查询分数大于70,小于90的Sno列
14、查询所有学生的Sname、Cno和Degree列
15、查询所有学生的Sno、Cname和Degree列
16、查询所有学生的Sname、Cname和Degree列
17、查询“95033”班学生的平均分。
19、查询选修“3-105”课程且成绩高于“109”号同学成绩的所有同学的记录
20、查询score中选学多门课程的同学中分数为非最高分成绩的记录
21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录
22、查询和学号为107的同学同年出生的所有学生的Sno、Sname和Sbirthday列
23、查询选修了”张旭”教师的课程的学生成绩Degree,学号Sno,课号Cno
24、查询选修人数多于5人的课程所对应的教师的姓名
25、查询95033班和95031班全体学生的记录
26、查询成绩在85分以上的课程的Cno
27、查询出”计算机系”教师所教课程的成绩表Sno,Sname,Ssex,Sclass,Cno,Degree,Cname
28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof
29、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno、Degree和Sname.
30、查询所有教师和同学的name、sex和birthday
31、查询所有“女”教师和“女”同学的name、sex和birthday
32、查询成绩比该课程平均成绩低的同学的成绩表Sno,Sname,Cno,Degree
33、查询所有任课教师的Tname和Depart
34、查询所有未讲课的教师的Tname和Depart
35、查询至少有2名男生的班级号Sclass
36、查询至少有2名男生的课程的课程号Cno
36、查询不姓王的同学信息
37、查询Student表中每个学生的姓名Sname和年龄
38、查询Student表中最大和最小的日期值Sbirthday
39、以班号和年龄从大到小的顺序查询Student表中的全部记录
40、查询“男”教师及其所上的课程
41、查询最高分同学的Sno、Cno和Degree列
42、查询和“李军”同性别的所有同学的Sname
43、查询和“李军”同性别并同班的同学Sname.
44、查询所有选修“计算机导论”课程的“男”同学的成绩表
1.首先
创建student和teacher表
2.其次
创建score成绩表和course课程表
注意:
1.假如student表和teacher表没有创建出来,在创建score表或者course表的时候,当设置外键的时候会提示字段或表不存在。
2.所以需要首先创建出来student和teacher表,在创建score和course表
数据库中共有4张表,每张表的详细情况如下
1、student学生表属性
属性名 | 数据类型 | 长度 | 是否为空 | 注释 |
---|---|---|---|---|
Sno | char | 3 | 否 | 学号(主键) |
Sname | char | 8 | 否 | 学生姓名 |
Ssex | char | 2 | 否 | 学生性别 |
Sbirthday | datetime | 0 | 是 | 学生生日 |
Sclass | char | 5 | 是 | 学生所在班级 |
2、course课程表属性
属性名 | 数据类型 | 长度 | 是否为空 | 注释 |
---|---|---|---|---|
Cno | char | 5 | 否 | 课程号(主键) |
Cname | varchar | 10 | 否 | 课程名称 |
Tno | char | 3 | 否 | 教工号(外键) |
3、score成绩表属性
属性名 | 数据类型 | 长度 | 是否为空 | 注释 |
---|---|---|---|---|
Sno | char | 3 | 否 | 学号(主键) |
Cno | char | 5 | 否 | 课程号(主键+外键) |
Degree | decimal | 10 | 是 | 成绩 |
4、teacher教师表属性
属性名 | 数据类型 | 长度 | 是否为空 | 注释 |
---|---|---|---|---|
Tno | char | 3 | 否 | 教工号(主键) |
Tname | char | 4 | 否 | 教工姓名 |
Tsex | char | 2 | 否 | 教工性别 |
Tbirthday | datetime | 0 | 是 | 教工生日 |
Prof | char | 6 | 是 | 教工职称 |
Depart | varchar | 10 | 否 | 教工所在专业 |
1、student表数据
Sno | Sname | Ssex | Sbirthday | Sclass |
---|---|---|---|---|
108 | 曾华 | 男 | 1977-09-01 | 95033 |
105 | 匡明 | 男 | 1975-10-02 | 95031 |
107 | 王丽 | 女 | 1976-01-23 | 95033 |
101 | 李军 | 男 | 1976-02-20 | 95033 |
109 | 王芳 | 女 | 1975-02-10 | 95031 |
103 | 陆君 | 男 | 1974-06-03 | 95031 |
2、course表数据
Cno | Cname | Tno |
---|---|---|
3-105 | 计算机导论 | 825 |
3-245 | 操作系统 | 804 |
6-166 | 数字电路 | 856 |
9-888 | 高等数学 | 831 |
3、score表数据
Sno | Cno | Degree |
---|---|---|
103 | 3-245 | 86 |
105 | 3-245 | 75 |
109 | 3-245 | 68 |
103 | 3-105 | 92 |
105 | 3-105 | 88 |
109 | 3-105 | 76 |
101 | 3-105 | 64 |
107 | 3-105 | 91 |
108 | 3-105 | 78 |
101 | 6-116 | 85 |
107 | 6-116 | 79 |
108 | 6-116 | 81 |
4、teacher表数据
Tno | Tname | Tsex | Tbirthday | Prof | Depart |
---|---|---|---|---|---|
804 | 李诚 | 男 | 1958-12-02 | 副教授 | 计算机系 |
856 | 张旭 | 男 | 1969-03-12 | 讲师 | 电子工程系 |
825 | 王萍 | 女 | 1972-05-05 | 助教 | 计算机系 |
831 | 刘冰 | 女 | 1977-08-14 | 助教 | 电子工程系 |
以下每条查询语句都会附带上查询结果的截图
1、 查询student表中的所有的Sname、Ssex和Class列。SELECT Sname, Ssex, Sclass FROM student;
2、 查询教师所有的单位即不重复的Depart列
SELECT DISTINCT Depart FROM teacher;
3、查询Student表的所有记录
SELECT * FROM student;
4、查询Score表中成绩在60到80之间的所有记录
SELECT * FROM score WHERE Degree BETWEEN 60 AND 80;
5、查询Score表中成绩为85,86或88的所有记录。
SELECT * FROM score WHERE Degree = 85 OR Degree = 86 OR Degree = 88;
6、查询student表中“95031”班或性别为“女”的同学的所有记录
SELECT * FROM student WHERE Sclass = 95031 OR Ssex = '女';
7、以Sclass降序查询student表的所有记录
SELECT * FROM student ORDER BY Sclass DESC;
8、以Cno升序、Degree降序查询score表的所有记录
SELECT * FROM score ORDER BY Cno, Degree DESC;
9、查询“95031”班的学生人数
SELECT COUNT(Sclass) AS 学生人数 FROM student WHERE Sclass = 95031;
10、查询score表中的最高分的学生学号和课程号
SELECT MAX(Degree) Cno, Sno FROM score;
11、查询每门课的平均成绩和Cno
SELECT AVG(Degree), Cno FROM score GROUP BY Cno;
12、查询score表中至少有5名学生选修的并以3开头的课程的平均分数
SELECT AVG(Degree) AS 平均分 FROM score WHERE Cno = ( SELECT Cno FROM score WHERE Cno LIKE '3%' GROUP BY Cno HAVING count(*) >= 5 );
13、查询分数大于70,小于90的Sno列
SELECT DISTINCT Sno FROM score WHERE Degree BETWEEN 70 AND 90;
14、查询所有学生的Sname、Cno和Degree列
SELECT student.Sname, score.Cno, score.Degree FROM student, score WHERE student.Sno = score.Sno;
15、查询所有学生的Sno、Cname和Degree列
SELECT student.Sname, score.Sno, score.Degree FROM score, course, student WHERE score.Cno = course.Cno AND student.Sno = score.Sno;
16、查询所有学生的Sname、Cname和Degree列
SELECT student.Sname, course.Cname, score.Degree FROM student, score, course WHERE student.Sno = score.Sno AND score.Cno = course.Cno
17、查询“95033”班学生的平均分。
SELECT student.Sclass, AVG(score.Degree) FROM score, student WHERE score.Sno = student.Sno AND student.Sclass = 95033 GROUP BY student.Sclass;
19、查询选修“3-105”课程且成绩高于“109”号同学成绩的所有同学的记录
SELECT * FROM score WHERE Degree IN ( SELECT Degree FROM score WHERE Degree > ( SELECT Degree FROM score WHERE Cno = '3-105' AND Sno = 109 ) ) ORDER BY Degree ASC;
20、查询score中选学多门课程的同学中分数为非最高分成绩的记录
SELECT * FROM score WHERE Degree NOT IN (SELECT MAX(Degree) FROM score) AND Sno IN ( SELECT Sno FROM score GROUP BY Sno HAVING COUNT(*) >= 2 )
21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录
SELECT * FROM score WHERE Degree > ( SELECT Degree FROM score WHERE Sno = 109 AND Cno = '3-105' ) ORDER BY Degree;
22、查询和学号为107的同学同年出生的所有学生的Sno、Sname和Sbirthday列
SELECT Sno, Sname, Sbirthday FROM student WHERE YEAR (Sbirthday) = ( SELECT YEAR (Sbirthday) FROM student WHERE Sno = 107 )
23、查询选修了”张旭”教师的课程的学生成绩Degree,学号Sno,课号Cno
SELECT * FROM score, teacher, course WHERE teacher.Tname = '张旭' AND teacher.Tno = course.Tno AND course.Cno = score.Cno
24、查询选修人数多于5人的课程所对应的教师的姓名
SELECT teacher.Tname FROM teacher, course, score WHERE score.Cno = ( SELECT score.Cno FROM score GROUP BY score.Cno HAVING COUNT(*) >= 5 ) AND course.Cno = score.Cno AND course.Tno = teacher.Tno GROUP BY teacher.Tname;
25、查询95033班和95031班全体学生的记录
SELECT DISTINCT * FROM student, score, course WHERE ( student.Sclass = 95033 OR student.Sclass = 95031 ) AND student.Sno = score.Sno AND score.Cno = course.Cno ORDER BY student.Sclass;
26、查询成绩在85分以上的课程的Cno
SELECT DISTINCT score.Cno FROM score WHERE Degree > 85;
27、查询出”计算机系”教师所教课程的成绩表Sno,Sname,Ssex,Sclass,Cno,Degree,Cname
SELECT student.Sno, student.Sname, student.Ssex, student.Sclass, score.Cno, score.Degree, course.Cname FROM student, score, course, teacher WHERE teacher.Depart = '计算机系' AND teacher.Tno = course.Tno AND course.Cno = score.Cno AND student.Sno = score.Sno;
28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof
SELECT Tname, Prof FROM teacher WHERE Prof NOT IN ( SELECT Prof FROM teacher WHERE Depart = '计算机系' AND Prof IN ( SELECT Prof FROM teacher WHERE Depart = '电子工程系' ) )
29、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno、Degree和Sname.
SELECT student.Sno, student.Sname, score.Cno, score.Degree FROM student, score WHERE score.Degree > ( SELECT DISTINCT MAX(score.Degree) FROM score WHERE score.Cno = '3-245' ) AND score.Cno = '3-105' AND score.Sno = student.Sno
30、查询所有教师和同学的name、sex和birthday
SELECT student.Sname, student.Ssex, student.Sbirthday FROM student UNION SELECT teacher.Tname, teacher.Tsex, teacher.Tbirthday FROM teacher;
31、查询所有“女”教师和“女”同学的name、sex和birthday
SELECT student.Sname, student.Ssex, student.Sbirthday FROM student WHERE student.Ssex = '女' UNION SELECT teacher.Tname, teacher.Tsex, teacher.Tbirthday FROM teacher WHERE teacher.Tsex = '女';
32、查询成绩比该课程平均成绩低的同学的成绩表Sno,Sname,Cno,Degree
SELECT student.Sno, student.Sname, Cno, Degree FROM student, score AS scoreA WHERE Degree < ( SELECT AVG(Degree) FROM score AS scoreB WHERE scoreA.Cno = scoreB.Cno GROUP BY Cno ) AND student.Sno = scoreA.Sno ORDER BY scoreA.Cno;
33、查询所有任课教师的Tname和Depart
SELECT DISTINCT teacher.Tname, teacher.Depart FROM teacher, course, score WHERE teacher.Tno = course.Tno AND course.Cno = score.Cno;
34、查询所有未讲课的教师的Tname和Depart
SELECT DISTINCT teacher.Tname, teacher.Depart FROM teacher WHERE teacher.Tname NOT IN ( SELECT DISTINCT teacher.Tname FROM teacher, course, score WHERE teacher.Tno = course.Tno AND course.Cno = score.Cno )
35、查询至少有2名男生的班级号Sclass
SELECT student.Sclass FROM student WHERE student.Ssex = '男' GROUP BY student.Sclass HAVING COUNT(1) > 1
36、查询至少有2名男生的课程的课程号Cno
SELECT score.Cno FROM score, student WHERE student.Ssex = '男' GROUP BY score.Cno HAVING COUNT(1) > 1
36、查询不姓王的同学信息
SELECT * FROM student WHERE student.Sname NOT IN ( SELECT student.Sname FROM student WHERE student.Sname LIKE '王%' ) GROUP BY student.Sname ORDER BY student.Sclass;
37、查询Student表中每个学生的姓名Sname和年龄
SELECT student.Sname, YEAR (NOW()) - YEAR (student.Sbirthday) AS 年龄 FROM student
38、查询Student表中最大和最小的日期值Sbirthday
SELECT MIN(student.Sbirthday) AS 最大, MAX(student.Sbirthday) AS 最小 FROM student;
39、以班号和年龄从大到小的顺序查询Student表中的全部记录
SELECT * FROM student ORDER BY student.Sclass DESC, student.Sbirthday ASC;
40、查询“男”教师及其所上的课程
SELECT teacher.Tno, teacher.Tname, teacher.Tsex, course.Cname FROM teacher, course WHERE teacher.Tsex = '男' AND teacher.Tno = course.Tno;
41、查询最高分同学的Sno、Cno和Degree列
SELECT DISTINCT score.Sno, score.Cno, score.Degree FROM score WHERE score.Degree IN ( SELECT MAX(score.Degree) FROM score )
42、查询和“李军”同性别的所有同学的Sname
SELECT student.Sname, student.Ssex FROM student WHERE student.Ssex IN ( SELECT student.Ssex FROM student WHERE student.Sname = '李军' )
43、查询和“李军”同性别并同班的同学Sname.
SELECT student.Sname, student.Ssex, student.Sclass FROM student WHERE student.Ssex IN ( SELECT student.Ssex FROM student WHERE student.Sname = '李军' ) AND student.Sclass IN ( SELECT student.Sclass FROM student WHERE student.Sname = '李军' )
44、查询所有选修“计算机导论”课程的“男”同学的成绩表
SELECT student.Sno, student.Sname, student.Ssex, course.Cname, score.Degree FROM student, score, course WHERE course.Cname = '计算机导论' AND student.Ssex = '男' AND student.Sno = score.Sno AND course.Cno = score.Cno GROUP BY student.Sname ORDER BY student.Sno;
相关文章推荐
- 经典sql查询语句50条(附答案的).doc
- SQL数据库面试题以及答案(50例题优化版-增加图片):你必知必会的SQL语句练习
- sql基本查询语句练习
- 【MySQL】经典数据库SQL语句编写练习题——SQL语句扫盲
- mysql查询语句练习题跟答案
- 查询表里面有N组相同的记录经典SQL语句
- 查询、课程-Oracle数据库之SQL语句练习-by小雨
- MySQL环境搭建及SQL查询语句练习
- oracle查询语句练习题与答案(scott用户)
- SQL经典查询语句
- SQL练习 demo2_select_distinct查询语句
- sql 查询经典语句
- mysql查询语句练习题跟答案
- Oracle、SQL server、MySQL数据库中分页查询的SQL语句
- MySQL数据库优化技术之SQL语句慢查询定位
- sql查询练习题及答案
- sql 查询经典语句
- SQL语句的经典语句50例--MySQL版本的答案
- oracle SQL语句练习MERGE、模糊查询、排序、
- 探讨:MySQL中如何查询当前正在运行的SQL语句