SQL 练习题

141 阅读6分钟
-- 创建数据库
create DATABASE `test`;
use `test`;
-- 班级表
create TABLE class(
 cid int not null auto_increment PRIMARY key,
 caption VARCHAR(12) not null);
insert into class values(1,"三年二班"),(2,"一年三班"),(3,"三年一班");

-- 教师表
CREATE TABLE teacher(tid int not null auto_increment PRIMARY KEY,tname VARCHAR(10) not null);
insert into teacher VALUES(1,'朱元璋'),(2,'朱棣'),(3,'于谦'),(4,'郭子兴'),(5,'姚广孝'),(6,'王守仁'),(7,'海瑞');

-- 学生表
CREATE TABLE student(
sid int not null auto_increment PRIMARY key,
sname VARCHAR(10) not null,
gender char(1) not null ,
class_id int not null);
INSERT INTO `student` VALUES (1, '常遇春', '男', 1);
INSERT INTO `student` VALUES (2, '蓝玉', '男', 1);
INSERT INTO `student` VALUES (3, '朱标', '男', 2);
INSERT INTO `student` VALUES (4, '秦良玉', '女', 2);
INSERT INTO `student` VALUES (5, '张居正', '男', 1);
INSERT INTO `student` VALUES (6, '宋濂', '男', 2);
INSERT INTO `student` VALUES (7, '朱厚照', '男', 2);
INSERT INTO `student` VALUES (8, '朱由检', '男', 3);
INSERT INTO `student` VALUES (9, '刘基', '男', 3);
INSERT INTO `student` VALUES (10, '唐寅', '男', 3);
INSERT INTO `student` VALUES (11, '朱允炆', '男', 3);
INSERT INTO `student` VALUES (12, '徐阶', '男', 2);
INSERT INTO `student` VALUES (13, '朱祐樘', '男', 3);
INSERT INTO `student` VALUES (14, '李如柏', '男', 1);
INSERT INTO `student` VALUES (15, '李成梁', '男', 1);
INSERT INTO `student` VALUES (16, '李如松', '男', 3);
INSERT INTO `student` VALUES (17, '徐霞客', '男', 1);
INSERT INTO `student` VALUES (18, '胡宗宪', '男', 1);
INSERT INTO `student` VALUES (19, '戚继光', '男', 3);
INSERT INTO `student` VALUES (20, '戚继光', '男', 2);
-- 课程表
CREATE TABLE course (cid int not null auto_increment PRIMARY key ,cname VARCHAR(10),teacher_id int not null);
insert into course values(1,"生物",1),(2,"体育",1),(3,"物理",2),(4, 'IT', 3),(5, '刑法', 5),(6, '语文', 7);

-- 成绩表
CREATE TABLE score (sid int not null PRIMARY key auto_increment ,student_id int not null ,course_id int not null,number int not null);
INSERT INTO `score` VALUES (1, 1, 1, 60);
INSERT INTO `score` VALUES (2, 1, 2, 59);
INSERT INTO `score` VALUES (3, 2, 2, 100);
INSERT INTO `score` VALUES (4, 3, 3, 54);
INSERT INTO `score` VALUES (5, 4, 4, 59);
INSERT INTO `score` VALUES (6, 5, 6, 86);
INSERT INTO `score` VALUES (7, 11, 1, 59);
INSERT INTO `score` VALUES (8, 8, 1, 100);
INSERT INTO `score` VALUES (9, 16, 1, 45);
INSERT INTO `score` VALUES (10, 12, 1, 66);
INSERT INTO `score` VALUES (11, 6, 1, 66);
INSERT INTO `score` VALUES (12, 6, 2, 67);
INSERT INTO `score` VALUES (13, 6, 3, 68);
INSERT INTO `score` VALUES (14, 6, 4, 69);
INSERT INTO `score` VALUES (15, 6, 5, 70);
INSERT INTO `score` VALUES (16, 6, 6, 71);
INSERT INTO `score` VALUES (17, 2, 1, 66);
INSERT INTO `score` VALUES (18, 3, 1, 66);
INSERT INTO `score` VALUES (19, 4, 1, 66);
INSERT INTO `score` VALUES (20, 19, 1, 99);
INSERT INTO `score` VALUES (21, 20, 1, 99);
INSERT INTO `score` VALUES (22, 5, 1, 66);

1.根据上图创建数据库&表结构并录入数据(可以自行创造数据)

2.创建用户test_root并赋予此数据库的所有权限。

3.查询姓“李"的老师的个数。

4.查询姓“张"的学生名单。

5.查询男生、女生的人数。

6.查询同名同姓学生名单,并统计同名人数。

7.查询“三年二班”的所有学生。

8.查询每个班级的班级名称、班级人数。

9.查询成绩小于60分的同学的学号、姓名、成绩、课程名称。

10.查询选修了"生物课"的所有学生ID、学生姓名、成绩。

11.查询选修了"生物课”且分数低于60的的所有学生ID、学生姓名、成绩。

12.查询所有同学的学号、姓名、选课数、总成绩。

13.查询各科被选修的学生数。

14.查询各科成绩的总分、最高分、最低分,显示:课程ID、课程名称、总分、最高分、最低分。

15.查询各科成绩的平均分,显示:课程ID、课程名称、平均分。

16.查询各科成绩的平均分,显示:课程ID、课程名称、平均分(按平均分从大到小排序)。

17.查询各科成绩的平均分和及格率,显示:课程ID、课程名称、平均分、及格率。

18.查询平均成绩大于60的所有学生的学号、平均成绩。

19.查询平均成绩大于85的所有学生的学号、平均成绩、姓名。

20.查询“三年二班”每个学生的学号、姓名、总成绩、平均成绩。

21.查询各个班级的班级名称、总成绩、平均成绩、及格率(按平均成绩从大到小排序)

22.查询学过“朱元璋”老师课的同学的学号、姓名。

23.查询没学过“朱元璋”老师课的同学的学号、姓名。

24.查询选修“朱棣”老师所授课程的学生中,成绩最高的学生姓名及其成绩(不考虑并列)。

25.查询选修“朱棣”老师所授课程的学生中,成绩最高的学生姓名及其成绩(考虑并列)

26.查询只选修了一门课程的全部学生的学号、姓名。

27.查询至少选修两门课程的学生学号、学生姓名、选修课程数量。

28.查询两门及以上不及格的同学的学号、学生姓名、选修课程数量。

29.查询选修了所有课程的学生的学号、姓名。

30.查询未选修所有课程的学生的学号、姓名。

31.查询所有学生都选修了的课程的课程号、课程名。

32.查询选修“生物°和“物理”课程的所有学生学号、姓名。

33.查询至少有一们课与学号为“1的学生所选的裸程相同的其他学生学号和姓名

34.查询与学号为“2”的同学选修的课程完全相同的具地学生学号和姓名。

35.查询生物”课程比”物理”课程成绩高的所有学生的学号:

36.查询每门课程成绩最好的前3名(不专虑成绩并列情况)。

37.查询每门课程成绩最好的前3名(考虑成绩并列情况)。

38.创建一个表sc,然后将score表中所有数据插入到sc表中。

39.向score表中插入一些记录,这些记录要求符合以下条件: - 学生ID为:没上过课程D为“2”课程的学生的学号: - 课程ID为:2 - 成绩为:80

40.向score表中插人些记录,这些记录要求符合以下条件: - 学生ID为:学过课程ID为“5”课程的学生的学号。 - 课程ID为:2。(我知道根据我的数据这个同学已经学历这个课程) - 成绩为:课程ID为3的最高分。