50道经典MySQL练习题,参考博客:
SQL经典50题练习_sql习题_不高冷面包人的博客-CSDN博客c
1 创建数据表
学生表
CREATE TABLE IF NOT EXISTS `student`(
`student_id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '学号',
`student_name` VARCHAR(10) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`birthday` DATETIME NOT NULL COMMENT '出生日期',
`gender` VARCHAR(10) NOT NULL DEFAULT '男' COMMENT '性别',
PRIMARY KEY(`student_id`)
)ENGINE=INNODB CHARSET=utf8;
INSERT INTO `student` VALUES
(1 , '赵雷' , '1990-01-01' , '男'),
(2 , '钱电' , '1990-12-21' , '男'),
(3 , '孙风' , '1990-12-20' , '男'),
(4 , '李云' , '1990-12-06' , '男'),
(5 , '周梅' , '1991-12-01' , '女'),
(6 , '吴兰' , '1992-01-01' , '女'),
(7 , '郑竹' , '1989-01-01' , '女'),
(8 , '张三' , '2017-12-20' , '女'),
(9 , '李四' , '2017-12-25' , '女'),
(10 , '李四' , '2012-06-06' , '女'),
(11 , '赵六' , '2013-06-13' , '女'),
(12 , '孙七' , '2014-06-01' , '女');
课程表
CREATE TABLE IF NOT EXISTS `course`(
`course_id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '课程编号',
`course_name` VARCHAR(10) NOT NULL COMMENT '课程名',
`teacher_id` INT(10) NOT NULL COMMENT '任课教师工号',
PRIMARY KEY(`course_id`)
)ENGINE=INNODB CHARSET=utf8;
INSERT INTO `course` VALUES
(1, '语文', 2),
(2, '数学', 1),
(3, '英语', 3);
教师表
CREATE TABLE IF NOT EXISTS `teacher`(
`teacher_id` INT(10) NOT NULL AUTO_INCREMENT COMMENT '教师工号',
`teacher_name` VARCHAR(10) NOT NULL DEFAULT '匿名' COMMENT '教师姓名',
PRIMARY KEY(`teacher_id`)
)ENGINE=INNODB CHARSET=utf8;
INSERT INTO `teacher` VALUES
(1, '高斯'),
(2, '李白'),
(3, 'Trump');
成绩表
CREATE TABLE IF NOT EXISTS `score`(
`student_id` INT(10) NOT NULL COMMENT '学号',
`course_id` INT(4) NOT NULL COMMENT '课程编号',
`score` DECIMAL(18,1) COMMENT '成绩',
KEY(`course_id`)
)ENGINE=INNODB CHARSET=utf8;
INSERT INTO `score` VALUES
(1 , 1 , 80),
(1 , 2 , 90),
(1 , 3 , 99),
(2 , 1 , 70),
(2 , 2 , 60),
(2 , 3 , 80),
(3 , 1 , 80),
(3 , 2 , 80),
(3 , 3 , 80),
(4 , 1 , 50),
(4 , 2 , 30),
(4 , 3 , 20),
(5 , 1 , 76),
(5 , 2 , 87),
(6 , 1 , 31),
(6 , 3 , 34),
(7 , 2 , 89),
(7 , 3 , 98);
2 题目
1. 查询" 1 "课程比" 2 "课程成绩高的学生的信息(学号、姓名、性别、出生日期)及课程分数
2. 查询同时参与" 1 "课程和" 2 "课程考试的学生信息
3. 查询存在" 1 "课程但可能不存在" 2 "课程的情况(不存在时显示为 null )
- 查询" 1 "课程比" 2 "课程成绩高的学生的信息(学号、姓名、性别、出生日期)及课程分数
- 查询同时参与" 1 "课程和" 2 "课程考试的学生信息
- 查询存在" 1 "课程但可能不存在" 2 "课程的情况(不存在时显示为 null )
- 查询不存在" 1 "课程但存在" 2 "课程的情况
- 查询平均成绩大于等于 60 分的同学的学生编号、姓名和平均成绩
- 查询在成绩表存在成绩的学生信息
- 查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩