文章目录
- 0. 后续(2)-(3)
- 1. 表格
- 2. 题目
- 3. 题目 + 解答
-
- 1、查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号和成绩
- 2、查询平均成绩大于60分的学生的学号和平均成绩
- 2.1、所有成绩小于60分的学生信息
- 2.2、查询平均成绩小于60分的学生的学号和平均成绩,考虑没参加考试的情况
- 3、查询所有学生的学号、姓名、选课数、总成绩
- 4、查询姓“猴”的老师的个数
- 5、查询没学过“张三”老师课的学生的学号、姓名
- 6、查询学过“张三”老师所教的所有课的同学的学号、姓名
- 7、查询学过编号为“01”的课程并且也学过编号为“02”的课程的学生的学号、姓名(!)
- 7.1、查询学过编号为“01”的课程但没有学过编号为“02”的课程的学生的学号、姓名(!)
- 8、查询课程编号为“02”的总成绩
- 9、查询所有课程成绩小于60分的学生的学号、姓名
- 10、查询没有学全所有课的学生的学号、姓名 (!)
- 11、查询至少有一门课与学号为“01”的学生所学课程相同的学生的学号和姓名
-
题目来源:超经典SQL练习题,做完这些你的SQL就过关了(时间比较久,可能是原出处)
-
工具:
Navicat For MySQL
0. 后续(2)-(3)
题虽是老题,但表格和题目都是自己最近实践过的,同时使用Navicat For MySQL
也实现了线下刷题,能更加直观地观察数据。题不多,但刷完对理解SQL的基础概念的理解和常用技巧的练习都有不少帮助。
若有帮助欢迎点赞、收藏、评论~
1. 表格
题目涉及到四张表格:
(后面有实现代码)
-
学生表(Student)
-
课程表(Course)
-
教师表(Teacher)
-
成绩表(Score)
附表格创建代码:
# Student 学生表
CREATE TABLE Student
(
s_id VARCHAR(20),
s_name VARCHAR(20) NOT NULL,
s_birth VARCHAR(20) NOT NULL,
s_sex VARCHAR(10) NOT NULL,
PRIMARY KEY(s_id)
);
INSERT INTO Student VALUES('01', '赵雷', '1990-01-01', '男');
INSERT INTO Student VALUES('02', '钱电', '1990-12-21', '男');
INSERT INTO Student VALUES('03', '孙风', '1990-05-20', '男');
INSERT INTO Student VALUES('04', '李云', '1990-08-06', '男');
INSERT INTO Student VALUES('05', '周梅', '1991-12-01', '女');
INSERT INTO Student VALUES('06', '吴兰', '1992-03-01', '女');
INSERT INTO Student VALUES('07', '郑竹', '1989-07-01', '女');
INSERT INTO Student VALUES('08', '王菊', '1990-01-20', '女');
# Course 课程表
CREATE TABLE Course
(
c_id VARCHAR(20),
c_name VARCHAR(20) NOT NULL,
t_id VARCHAR(20) NOT NULL,
PRIMARY KEY(c_id)
);
INSERT INTO Course VALUES('01', '语文', '02');
INSERT INTO Course VALUES('02', '数学', '01');
INSERT INTO Course VALUES