class表: mysql> create table class( -> cid int auto_increment primary key, -> caption char(32) not null default '' -> )charset utf8; Query OK, 0 rows affected (0.03 sec) mysql> insert into class(caption) values('三年二班'),('一年三班'),('三年一班'); Query OK, 3 rows affected (0.01 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from class; +-----+----------+ | cid | caption | +-----+----------+ | 1 | 三年二班 | | 2 | 一年三班 | | 3 | 三年一班 | +-----+----------+ 3 rows in set (0.00 sec) student表: mysql> create table student( -> sid int auto_increment primary key, -> sname char(20) not null default '', -> gender enum('男','女') not null default '女', -> class_id int not null default 1, -> constraint fk_stu_class foreign key(class_id) references class(cid) -> )charset utf8; Query OK, 0 rows affected (0.03 sec) mysql> insert into student(sname,gender,class_id) values('钢蛋','女',1),('铁锤','女',1),('山炮', '男',2); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from student; +-----+-------+--------+----------+ | sid | sname | gender | class_id | +-----+-------+--------+----------+ | 1 | 钢蛋 | 女 | 1 | | 2 | 铁锤 | 女 | 1 | | 3 | 山炮 | 男 | 2 | +-----+-------+--------+----------+ 3 rows in set (0.00 sec) teacher表: mysql> create table teacher( -> tid int auto_increment primary key, -> tname char(32) not null default '' -> )charset utf8; mysql> insert into teacher(tname) values('波多野结衣'),('苍井空'),('饭岛'); mysql> select * from teacher; +-----+------------+ | tid | tname | +-----+------------+ | 1 | 波多野结衣 | | 2 | 苍井空 | | 3 | 饭岛 | +-----+------------+ 3 rows in set (0.00 sec) course表: mysql> create table course( -> cid int auto_increment primary key, -> cname char(32) not null default '', -> teacher_id int not null default 1, -> constraint fk_cour_tea foreign key(teacher_id) references teacher(tid) -> )charset utf8; mysql> insert into course(cname,teacher_id) values('生物',1),('体育',1),('物理',2); mysql> select * from course; +-----+-------+------------+ | cid | cname | teacher_id | +-----+-------+------------+ | 1 | 生物 | 1 | | 2 | 体育 | 1 | | 3 | 物理 | 2 | +-----+-------+------------+ 3 rows in set (0.00 sec) score表: mysql> create table score( -> sid int auto_increment primary key, -> student_id int not null default 1, -> course_id int not null default 1, -> number int not null default 1, -> constraint fk_score_student foreign key (student_id) references student(si d), -> constraint fk_score_course foreign key (course_id) references course(cid) -> )charset utf8; mysql> insert into score(student_id,course_id,number) values (1,1,60),(1,2,59),(2,2,100); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from score; +-----+------------+-----------+--------+ | sid | student_id | course_id | number | +-----+------------+-----------+--------+ | 1 | 1 | 1 | 60 | | 2 | 1 | 2 | 59 | | 3 | 2 | 2 | 100 | +-----+------------+-----------+--------+ 3 rows in set (0.00 sec) 1. 查询所有大于60分的学生的姓名和学号 (DISTINCT: 去重) mysql> select sname,student.sid,number from student left join score on student.s id=score.student_id where number>60; +-------+-----+--------+ | sname | sid | number | +-------+-----+--------+ | 铁锤 | 2 | 100 | +-------+-----+--------+ 1 row in set (0.00 sec) -- 2.查询每个老师教授的课程数量 和 老师信息 mysql> select * from course left join teacher on teacher_id=teacher. +-----+-------+------------+------+------------+ | cid | cname | teacher_id | tid | tname | +-----+-------+------------+------+------------+ | 1 | 生物 | 1 | 1 | 波多野结衣 | | 2 | 体育 | 1 | 1 | 波多野结衣 | | 3 | 物理 | 2 | 2 | 苍井空 | +-----+-------+------------+------+------------+ 3 rows in set (0.00 sec) -- 3. 查询学生的信息以及学生所在的班级信息 mysql> select * from student left join class on class_id=class.cid; +-----+-------+--------+----------+------+----------+ | sid | sname | gender | class_id | cid | caption | +-----+-------+--------+----------+------+----------+ | 1 | 钢蛋 | 女 | 1 | 1 | 三年二班 | | 2 | 铁锤 | 女 | 1 | 1 | 三年二班 | | 3 | 山炮 | 男 | 2 | 2 | 一年三班 | +-----+-------+--------+----------+------+----------+ 3 rows in set (0.00 sec) -- 4、学生中男生的个数和女生的个数 mysql> select count(sid),gender from student group by gender; +------------+--------+ | count(sid) | gender | +------------+--------+ | 1 | 男 | | 2 | 女 | +------------+--------+ 2 rows in set (0.00 sec) -- 5、获取所有学习'生物'的学生的学号和成绩;姓名 mysql> select student.sid,sname,number,cname from student left join score on stu dent.sid=score.student_id left join course on course.cid=score.course_id where c name='生物'; +-----+-------+--------+-------+ | sid | sname | number | cname | +-----+-------+--------+-------+ | 1 | 钢蛋 | 60 | 生物 | +-----+-------+--------+-------+ 1 row in set (0.00 sec) -- 6、查询平均成绩大于60分的同学的学号和平均成绩; mysql> select student_id,avg(number) from score group by student_id having avg(n umber)>60; +------------+-------------+ | student_id | avg(number) | +------------+-------------+ | 2 | 100.0000 | +------------+-------------+ 1 row in set (0.00 sec) -- 7、查询姓“李”的老师的个数; mysql> insert into teacher(tname) values('李白'),('叶平'); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select count(tname) from teacher where tname='李白'; +--------------+ | count(tname) | +--------------+ | 1 | +--------------+ 1 row in set (0.00 sec) -- 8、查询课程成绩小于60分的同学的学号、姓名; mysql> select sname,student.sid,number from student left join score on student.s id=score.student_id where number<60; +-------+-----+--------+ | sname | sid | number | +-------+-----+--------+ | 钢蛋 | 1 | 59 | +-------+-----+--------+ 1 row in set (0.00 sec) -- 9. 删除学习“叶平”老师课的SC表记录 mysql> insert into course(cname,teacher_id) values('语文',4); Query OK, 1 row affected (0.00 sec) mysql> select * from course; +-----+-------+------------+ | cid | cname | teacher_id | +-----+-------+------------+ | 1 | 生物 | 1 | | 2 | 体育 | 1 | | 3 | 物理 | 2 | | 4 | 语文 | 4 | +-----+-------+------------+ 4 rows in set (0.00 sec) mysql> delete from course where cid=4; Query OK, 1 row affected (0.01 sec) -- 10.查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分; mysql> select course_id,max(number),min(number) from score group by c +-----------+-------------+-------------+ | course_id | max(number) | min(number) | +-----------+-------------+-------------+ | 1 | 60 | 60 | | 2 | 100 | 59 | +-----------+-------------+-------------+ 2 rows in set (0.00 sec)
-- 11.查询每门课程被选修的学生数
-- 12.查询姓“张”的学生名单;
-- 13.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列
-- 14.查询平均成绩大于85的所有学生的学号、姓名和平均成绩
-- 15.查询课程编号为3且课程成绩在80分以上的学生的学号和姓名;
-- 16.查询各个课程及相应的选修人数
-- 17.查询“4”课程分数小于60,按分数降序排列的同学学号
-- 18.删除学号为“2”的同学的“1”课程的成绩