day35

匿名 (未验证) 提交于 2019-12-03 00:15:02
  1. 查询所有大于60分的学生的姓名和学号 (DISTINCT: 去重)

mysql> select DISTINCT student.sname,sid from scores right join student on
-> sid=scores.student_id where scores.number1>60;
+----------+-----+
| sname | sid |
+----------+-----+
| xiaoning | 1 |
| xiaoming | 2 |
| xiaoa | 3 |
+----------+-----+
3 rows in set (0.00 sec)

-- 2.查询每个老师教授的课程数量 和 老师信息

mysql> select count(course_id),teacher_id from teacher_course group by teacher_id;
+------------------+------------+
| count(course_id) | teacher_id |
+------------------+------------+
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
+------------------+------------+
3 rows in set (0.00 sec)

-- 3. 查询学生的信息以及学生所在的班级信息

mysql> select sname,sid ,caption from clas left join student on
-> class_id=clas.cid;
+----------+------+--------------+
| sname | sid | caption |
+----------+------+--------------+
| xiaoning | 1 | 三年二班 |
| xiaod | 5 | 三年二班 |
| xiaof | 7 | 三年二班 |
| xiaoming | 2 | 一年三班 |
| xiaoa | 3 | 一年三班 |
| xiaoe | 6 | 一年三班 |
| xiaob | 4 | 三年一班 |
| xiaog | 8 | 三年一班 |
+----------+------+--------------+
8 rows in set (0.00 sec)

-- 4、学生中男生的个数和女生的个数

mysql> select count(sid),gender from student group by gender;
+------------+--------+
| count(sid) | gender |
+------------+--------+
| 5 | 男 |
| 3 | Ů |
+------------+--------+
2 rows in set (0.00 sec)

-- 5、获取所有学习'生物'的学生的学号和成绩;姓名

mysql> select student_id,sname,number1 from scores left join student on sid=scores.student_id where scores.course_id=1;
+------------+----------+---------+
| student_id | sname | number1 |
+------------+----------+---------+
| 1 | xiaoning | 80 |
| 2 | xiaoming | 70 |
| 3 | xiaoa | 50 |
+------------+----------+---------+
3 rows in set (0.00 sec)

-- 6、查询平均成绩大于60分的同学的学号和平均成绩;

mysql> select student_id ,avg(number1)as pj from scores group by student_id having pj > 60;
+------------+---------+
| student_id | pj |
+------------+---------+
| 1 | 66.6667 |
| 2 | 70.0000 |
| 3 | 70.0000 |
+------------+---------+
3 rows in set (0.00 sec)

-- 7、查询姓“张”的老师的个数;

mysql> select count(tid) from teacher where teacher.tname like '张%' group by tid;
+------------+
| count(tid) |
+------------+
| 1 |
+------------+
1 row in set (0.00 sec)

-- 8、查询课程成绩小于60分的同学的学号、姓名;

mysql> select DISTINCT student.sname,sid from scores right join student on
-> sid=scores.student_id where scores.number1<60;
+----------+-----+
| sname | sid |
+----------+-----+
| xiaoning | 1 |
| xiaoa | 3 |
+----------+-----+
2 rows in set (0.00 sec)

-- 9. 删除学习“叶平”老师课的SC表记录

-- 10.查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;

mysql> select course_id ,max(number1),min(number1) from scores group by course_id;
+-----------+--------------+--------------+
| course_id | max(number1) | min(number1) |
+-----------+--------------+--------------+
| 1 | 80 | 50 |
| 2 | 70 | 40 |
| 3 | 90 | 80 |
+-----------+--------------+--------------+
3 rows in set (0.00 sec)mysql> select course_id ,max(number1),min(number1) from scores group by course_id;
+-----------+--------------+--------------+
| course_id | max(number1) | min(number1) |
+-----------+--------------+--------------+
| 1 | 80 | 50 |
| 2 | 70 | 40 |
| 3 | 90 | 80 |
+-----------+--------------+--------------+
3 rows in set (0.00 sec)

-- 11.查询每门课程被选修的学生数

mysql> select course_id,count(student_id) from scores group by course_id;
+-----------+-------------------+
| course_id | count(student_id) |
+-----------+-------------------+
| 1 | 3 |
| 2 | 3 |
| 3 | 3 |
+-----------+-------------------+
3 rows in set (0.00 sec)

-- 12.查询姓“xiao”的学生名单;

mysql> select * from student where sname like 'xiao%';
+-----+----------+--------+----------+
| sid | sname | gender | class_id |
+-----+----------+--------+----------+
| 1 | xiaoning | 男 | 1 |
| 2 | xiaoming | 男 | 2 |
| 3 | xiaoa | 男 | 2 |
| 4 | xiaob | 男 | 3 |
| 5 | xiaod | Ů | 1 |
| 6 | xiaoe | Ů | 2 |
| 7 | xiaof | 男 | 1 |
| 8 | xiaog | Ů | 3 |
+-----+----------+--------+----------+
8 rows in set (0.00 sec)

-- 13.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列

mysql> select course_id,avg(number1)from scores group by course_id,
-> course_id order by avg(number1) asc,course_id desc;
+-----------+--------------+
| course_id | avg(number1) |
+-----------+--------------+
| 2 | 56.6667 |
| 1 | 66.6667 |
| 3 | 83.3333 |
+-----------+--------------+
3 rows in set (0.00 sec)

-- 14.查询平均成绩大于60的所有学生的学号、姓名和平均成绩

mysql> select student_id ,sname,avg(number1)as pj from scores left join
-> student on scores.student_id = student.sid group by student_id;
+------------+----------+---------+
| student_id | sname | pj |
+------------+----------+---------+
| 1 | xiaoning | 66.6667 |
| 2 | xiaoming | 70.0000 |
| 3 | xiaoa | 70.0000 |
+------------+----------+---------+
3 rows in set (0.00 sec)

-- 15.查询课程编号为3且课程成绩在65分以上的学生的学号和姓名;

mysql> select student_id ,sname from scores left join
-> student on scores.student_id = student.sid where course_id=3 and number1>65;
+------------+----------+
| student_id | sname |
+------------+----------+
| 1 | xiaoning |
| 2 | xiaoming |
| 3 | xiaoa |
+------------+----------+
3 rows in set (0.00 sec)

-- 16.查询各个课程及相应的选修人数

mysql> select cname,course_id,count(student_id) from scores left join course
-> on scores.course_id=course.coid group by course_id;
+--------+-----------+-------------------+
| cname | course_id | count(student_id) |
+--------+-----------+-------------------+
| 生物 | 1 | 3 |
| 物理 | 2 | 3 |
| 体育 | 3 | 3 |
+--------+-----------+-------------------+
3 rows in set (0.02 sec)

-- 17.查询“2”课程分数小于85,按分数降序排列的同学学号

mysql> select student_id from scores where number1<85 and course_id=2 order by number1 desc;
+------------+
| student_id |
+------------+
| 3 |
| 2 |
| 1 |
+------------+
3 rows in set (0.00 sec)

-- 18.删除学号为“2”的同学的“1”课程的成绩

mysql> delete from scores where student_id=2 and course_id=1;
Query OK, 1 row affected (0.07 sec)

mysql> select * from scores where student_id=2;
+------+------------+-----------+---------+
| scid | student_id | course_id | number1 |
+------+------------+-----------+---------+
| 5 | 2 | 2 | 60 |
| 8 | 2 | 3 | 80 |
+------+------------+-----------+---------+

-- 1. 查询所有大于60分的学生的姓名和学号  (DISTINCT: 去重)  mysql> select DISTINCT student.sname,sid from scores right join student on     -> sid=scores.student_id where scores.number1>60; +----------+-----+ | sname    | sid | +----------+-----+ | xiaoning |   1 | | xiaoming |   2 | | xiaoa    |   3 | +----------+-----+ 3 rows in set (0.00 sec)  -- 2.查询每个老师教授的课程数量 和 老师信息  mysql> select count(course_id),teacher_id from teacher_course group by teacher_id; +------------------+------------+ | count(course_id) | teacher_id | +------------------+------------+ |                2 |          1 | |                2 |          2 | |                2 |          3 | +------------------+------------+ 3 rows in set (0.00 sec)  -- 3. 查询学生的信息以及学生所在的班级信息  mysql> select sname,sid ,caption from clas left join student on     -> class_id=clas.cid; +----------+------+--------------+ | sname    | sid  | caption      | +----------+------+--------------+ | xiaoning |    1 | 三年二班     | | xiaod    |    5 | 三年二班     | | xiaof    |    7 | 三年二班     | | xiaoming |    2 | 一年三班     | | xiaoa    |    3 | 一年三班     | | xiaoe    |    6 | 一年三班     | | xiaob    |    4 | 三年一班     | | xiaog    |    8 | 三年一班     | +----------+------+--------------+ 8 rows in set (0.00 sec)  -- 4、学生中男生的个数和女生的个数  mysql> select count(sid),gender from student group by gender; +------------+--------+ | count(sid) | gender | +------------+--------+ |          5 | 男     | |          3 | 女     | +------------+--------+ 2 rows in set (0.00 sec)  -- 5、获取所有学习'生物'的学生的学号和成绩;姓名  mysql> select student_id,sname,number1 from scores left join student on sid=scores.student_id where scores.course_id=1; +------------+----------+---------+ | student_id | sname    | number1 | +------------+----------+---------+ |          1 | xiaoning |      80 | |          2 | xiaoming |      70 | |          3 | xiaoa    |      50 | +------------+----------+---------+ 3 rows in set (0.00 sec)  -- 6、查询平均成绩大于60分的同学的学号和平均成绩;   mysql> select student_id ,avg(number1)as pj from scores group by student_id having pj > 60; +------------+---------+ | student_id | pj      | +------------+---------+ |          1 | 66.6667 | |          2 | 70.0000 | |          3 | 70.0000 | +------------+---------+ 3 rows in set (0.00 sec)  -- 7、查询姓“张”的老师的个数;  mysql> select  count(tid) from teacher where teacher.tname like '张%' group by tid; +------------+ | count(tid) | +------------+ |          1 | +------------+ 1 row in set (0.00 sec)  -- 8、查询课程成绩小于60分的同学的学号、姓名;  mysql> select DISTINCT student.sname,sid from scores right join student on     -> sid=scores.student_id where scores.number1<60; +----------+-----+ | sname    | sid | +----------+-----+ | xiaoning |   1 | | xiaoa    |   3 | +----------+-----+ 2 rows in set (0.00 sec)  -- 9. 删除学习“叶平”老师课的SC表记录    -- 10.查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;  mysql> select course_id ,max(number1),min(number1) from scores group by course_id; +-----------+--------------+--------------+ | course_id | max(number1) | min(number1) | +-----------+--------------+--------------+ |         1 |           80 |           50 | |         2 |           70 |           40 | |         3 |           90 |           80 | +-----------+--------------+--------------+ 3 rows in set (0.00 sec)mysql> select course_id ,max(number1),min(number1) from scores group by course_id; +-----------+--------------+--------------+ | course_id | max(number1) | min(number1) | +-----------+--------------+--------------+ |         1 |           80 |           50 | |         2 |           70 |           40 | |         3 |           90 |           80 | +-----------+--------------+--------------+ 3 rows in set (0.00 sec)  -- 11.查询每门课程被选修的学生数  mysql> select course_id,count(student_id) from scores group by course_id; +-----------+-------------------+ | course_id | count(student_id) | +-----------+-------------------+ |         1 |                 3 | |         2 |                 3 | |         3 |                 3 | +-----------+-------------------+ 3 rows in set (0.00 sec)  -- 12.查询姓“xiao”的学生名单;  mysql> select * from student where sname like 'xiao%'; +-----+----------+--------+----------+ | sid | sname    | gender | class_id | +-----+----------+--------+----------+ |   1 | xiaoning | 男     |        1 | |   2 | xiaoming | 男     |        2 | |   3 | xiaoa    | 男     |        2 | |   4 | xiaob    | 男     |        3 | |   5 | xiaod    | 女     |        1 | |   6 | xiaoe    | 女     |        2 | |   7 | xiaof    | 男     |        1 | |   8 | xiaog    | 女     |        3 | +-----+----------+--------+----------+ 8 rows in set (0.00 sec)  -- 13.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列  mysql> select course_id,avg(number1)from scores group by course_id,     -> course_id order by avg(number1) asc,course_id desc; +-----------+--------------+ | course_id | avg(number1) | +-----------+--------------+ |         2 |      56.6667 | |         1 |      66.6667 | |         3 |      83.3333 | +-----------+--------------+ 3 rows in set (0.00 sec)  -- 14.查询平均成绩大于60的所有学生的学号、姓名和平均成绩  mysql> select student_id ,sname,avg(number1)as pj from scores left join     -> student on scores.student_id = student.sid group by student_id; +------------+----------+---------+ | student_id | sname    | pj      | +------------+----------+---------+ |          1 | xiaoning | 66.6667 | |          2 | xiaoming | 70.0000 | |          3 | xiaoa    | 70.0000 | +------------+----------+---------+ 3 rows in set (0.00 sec)  -- 15.查询课程编号为3且课程成绩在65分以上的学生的学号和姓名;  mysql> select student_id ,sname from scores left join     -> student on scores.student_id = student.sid where course_id=3 and number1>65; +------------+----------+ | student_id | sname    | +------------+----------+ |          1 | xiaoning | |          2 | xiaoming | |          3 | xiaoa    | +------------+----------+ 3 rows in set (0.00 sec)  -- 16.查询各个课程及相应的选修人数  mysql>  select cname,course_id,count(student_id) from scores left join course     ->  on scores.course_id=course.coid group by course_id; +--------+-----------+-------------------+ | cname  | course_id | count(student_id) | +--------+-----------+-------------------+ | 生物   |         1 |                 3 | | 物理   |         2 |                 3 | | 体育   |         3 |                 3 | +--------+-----------+-------------------+ 3 rows in set (0.02 sec)  -- 17.查询“2”课程分数小于85,按分数降序排列的同学学号  mysql> select student_id from scores where number1<85 and course_id=2 order by number1 desc; +------------+ | student_id | +------------+ |          3 | |          2 | |          1 | +------------+ 3 rows in set (0.00 sec)  -- 18.删除学号为“2”的同学的“1”课程的成绩  mysql> delete from scores where student_id=2 and course_id=1; Query OK, 1 row affected (0.07 sec)  mysql> select * from scores where student_id=2; +------+------------+-----------+---------+ | scid | student_id | course_id | number1 | +------+------------+-----------+---------+ |    5 |          2 |         2 |      60 | |    8 |          2 |         3 |      80 | +------+------------+-----------+---------+
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!