day35作业 数据库

====班级表

mysql> insert into class values
    -> (1, '三年二班'),
    -> (2, '三年一班'),
    -> (3, '三年三班'),
    -> (4, '三年六班');
Query OK, 4 rows affected (0.00 sec)

mysql> select * from class;
+-----+--------------+
| cid | caption      |
+-----+--------------+
|   1 | 三年二班     |
|   2 | 三年一班     |
|   3 | 三年三班     |
|   4 | 三年六班     |
+-----+--------------+
4 rows in set (0.00 sec)

====学生表

mysql> insert into student values
    -> (1, '巴托', 'male', 1),
    -> (2, '拉花', 'male', 2),
    -> (3, '尔康', 'male', 3),
    -> (4, '小太妹', 'female', 4),
    -> (5, '大静', 'female', 4);
    
mysql> insert into student values
    -> (6, '赏金', 'female', 1),
    -> (7, '隆多', 'male', 2),
    -> (8, '薇恩', 'female', 3),
    -> (9, '小萝莉', 'female', 4),
    -> (10, '寒冰', 'female',1);
Query OK, 5 rows affected (0.00 sec)

mysql> insert into student values
    -> (11, '剑圣', 'male', 1),
    -> (12, '洛克', 'male', 3),
    -> (13, '瑞文', 'male', 3),
    -> (14, '皇子', 'male', 4),
    -> (15, '凯莎', 'female', 2);
Query OK, 5 rows affected (0.00 sec)

mysql> select * from student;
+-----+-----------+--------+----------+
| sid | sname     | gender | class_id |
+-----+-----------+--------+----------+
|   1 | 巴托      | male   |        1 |
|   2 | 拉花      | male   |        2 |
|   3 | 尔康      | male   |        3 |
|   4 | 小太妹    | female |        4 |
|   5 | 大静      | female |        4 |
|   6 | 赏金      | female |        1 |
|   7 | 隆多      | male   |        2 |
|   8 | 薇恩      | female |        3 |
|   9 | 小萝莉    | female |        4 |
|  10 | 寒冰      | female |        1 |
|  11 | 剑圣      | male   |        1 |
|  12 | 洛克      | male   |        3 |
|  13 | 瑞文      | male   |        3 |
|  14 | 皇子      | male   |        4 |
|  15 | 凯莎      | female |        2 |
+-----+-----------+--------+----------+

====教师表

mysql> insert into teacher values
    -> (2,  '李某'),
    -> (3,  '梁某'),
    -> (4,  '陈某');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> insert into teacher values
    -> (5,  '刘某'),
    -> (6,  '唐某');
Query OK, 2 rows affected (0.02 sec)

mysql> select * from teacher;
+-----+--------+
| tid | tname  |
+-----+--------+
|   1 | 陈某   |
|   2 | 李某   |
|   3 | 梁某   |
|   4 | 陈某   |
|   5 | 刘某   |
|   6 | 唐某   |
+-----+--------+
6 rows in set (0.00 sec)

====课程表

mysql> insert into course values
    -> (1, '生物', 1),
    -> (2, '物理', 2),
    -> (3, '体育', 3),
    -> (4, '美术', 2),
    -> (5, '体育', 4);
Query OK, 5 rows affected (0.01 sec)

mysql> select * from course;
+-----+--------+------------+
| cid | cname  | teacher_id |
+-----+--------+------------+
|   1 | 生物   |          1 |
|   2 | 物理   |          2 |
|   3 | 体育   |          3 |
|   4 | 美术   |          2 |
|   5 | 体育   |          4 |
+-----+--------+------------+
5 rows in set (0.00 sec)

====成绩表

mysql> insert into score values
    -> (1, 1, 1, 10),
    -> (2, 1, 2, 9),
    -> (3, 1, 4, 66),
    -> (4, 2, 1, 8),
    -> (5, 2, 3, 68),
    -> (6, 2, 4, 88),
    -> (7, 3, 2, 8),
    -> (8, 3, 3, 55),
    -> (9, 3, 4, 66),
    -> (10, 4, 1, 6),
    -> (11, 4, 3, 89),
    -> (12, 4, 4, 96),
    -> (13, 5, 1, 33),
    -> (14, 5, 2, 34),
    -> (15, 5, 4, 34);
Query OK, 15 rows affected (0.00 sec)

mysql> insert into score values
    -> (16, 6, 1, 10),
    -> (17, 6, 2, 9),
    -> (18, 6, 4, 66),
    -> (19, 7, 1, 8),
    -> (20, 7, 3, 68),
    -> (21, 7, 4, 88),
    -> (22, 7, 2, 8);
Query OK, 7 rows affected (0.00 sec)


mysql> select * from score;
+-----+------------+-----------+--------+
| sid | student_id | course_id | number |
+-----+------------+-----------+--------+
|   1 |          1 |         1 |     10 |
|   2 |          1 |         2 |      9 |
|   3 |          1 |         4 |     66 |
|   5 |          2 |         3 |     68 |
|   6 |          2 |         4 |     88 |
|   7 |          3 |         2 |      8 |
|   8 |          3 |         3 |     55 |
|   9 |          3 |         4 |     66 |
|  10 |          4 |         1 |      6 |
|  11 |          4 |         3 |     89 |
|  12 |          4 |         4 |     96 |
|  13 |          5 |         1 |     33 |
|  14 |          5 |         2 |     34 |
|  15 |          5 |         4 |     34 |
|  16 |          6 |         1 |     10 |
|  17 |          6 |         2 |      9 |
|  18 |          6 |         4 |     66 |
|  19 |          7 |         1 |      8 |
|  20 |          7 |         3 |     68 |
|  21 |          7 |         4 |     88 |
|  22 |          7 |         2 |      8 |
+-----+------------+-----------+--------+
21 rows in set (0.00 sec)
  1. 查询所有大于60分的学生的姓名和学号 (DISTINCT: 去重)
mysql> select distinct student.sid, sname
    -> from student left join score on
    -> student.sid = score.student_id where
    -> number > 60;
+-----+-----------+
| sid | sname     |
+-----+-----------+
|   1 | 巴托      |
|   2 | 拉花      |
|   3 | 尔康      |
|   4 | 小太妹    |
|   6 | 赏金      |
|   7 | 隆多      |
+-----+-----------+

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

mysql> select tid, tname, count(tid)
    -> from teacher right join course on
    -> tid = teacher_id
    -> group by tid;
+------+--------+------------+
| tid  | tname  | count(tid) |
+------+--------+------------+
|    1 | 陈某   |          1 |
|    2 | 李某   |          2 |
|    3 | 梁某   |          1 |
|    4 | 陈某   |          1 |
+------+--------+------------+
4 rows in set (0.00 sec)

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

mysql> select *
    -> from student left join class on
    -> class_id = cid;
+-----+-----------+--------+----------+------+--------------+
| sid | sname     | gender | class_id | cid  | caption      |
+-----+-----------+--------+----------+------+--------------+
|   1 | 巴托      | male   |        1 |    1 | 三年二班     |
|   6 | 赏金      | female |        1 |    1 | 三年二班     |
|  10 | 寒冰      | female |        1 |    1 | 三年二班     |
|  11 | 剑圣      | male   |        1 |    1 | 三年二班     |
|   2 | 拉花      | male   |        2 |    2 | 三年一班     |
|   7 | 隆多      | male   |        2 |    2 | 三年一班     |
|  15 | 凯莎      | female |        2 |    2 | 三年一班     |
|   3 | 尔康      | male   |        3 |    3 | 三年三班     |
|   8 | 薇恩      | female |        3 |    3 | 三年三班     |
|  12 | 洛克      | male   |        3 |    3 | 三年三班     |
|  13 | 瑞文      | male   |        3 |    3 | 三年三班     |
|   4 | 小太妹    | female |        4 |    4 | 三年六班     |
|   5 | 大静      | female |        4 |    4 | 三年六班     |
|   9 | 小萝莉    | female |        4 |    4 | 三年六班     |
|  14 | 皇子      | male   |        4 |    4 | 三年六班     |
+-----+-----------+--------+----------+------+--------------+
15 rows in set (0.00 sec)

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

mysql> select gender, count(gender)
    -> from student
    -> group by gender;
+--------+---------------+
| gender | count(gender) |
+--------+---------------+
| male   |             8 |
| female |             7 |
+--------+---------------+
2 rows in set (0.00 sec)

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

mysql> select student.sid, sname, number
    -> from score
    -> left join student on
    -> score.student_id = student.sid
    -> left join course on
    -> score.course_id = course.cid where
    -> course.cname = '生物';
+------+-----------+--------+
| sid  | sname     | number |
+------+-----------+--------+
|    1 | 巴托      |     10 |
|    4 | 小太妹    |      6 |
|    5 | 大静      |     33 |
|    6 | 赏金      |     10 |
|    7 | 隆多      |      8 |
+------+-----------+--------+
5 rows in set (0.00 sec)

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

mysql> select student.sid, sname, number
    -> from score
    -> left join student on
    -> score.student_id = student.sid
    -> left join course on
    -> score.course_id = course.cid where
    -> course.cname = '生物';
+------+-----------+--------+
| sid  | sname     | number |
+------+-----------+--------+
|    1 | 巴托      |     10 |
|    4 | 小太妹    |      6 |
|    5 | 大静      |     33 |
|    6 | 赏金      |     10 |
|    7 | 隆多      |      8 |
+------+-----------+--------+
5 rows in set (0.00 sec)

7.查询姓“李”的老师的个数;

mysql> select count(tname) '姓李的老师的个数'
    -> from teacher
    -> where tname like '李%';
+--------------------------+
| 姓李的老师的个数         |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.00 sec)

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

mysql> select distinct student.sid, sname
    -> from student left join score on
    -> student.sid = score.student_id where
    -> number < 60;
+-----+-----------+
| sid | sname     |
+-----+-----------+
|   1 | 巴托      |
|   3 | 尔康      |
|   4 | 小太妹    |
|   5 | 大静      |
|   6 | 赏金      |
|   7 | 隆多      |
+-----+-----------+
6 rows in set (0.00 sec)

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

mysql> delete from score
    -> where course_id =(
    -> select cid
    -> from teacher
    -> left join course on
    -> teacher.tid = course.teacher_id
    -> where tname = '皇子');
Query OK, 0 rows affected (0.00 sec)

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

mysql> select course_id '课程ID', max(number) '最高分' , min(number) '最低分'
    -> from score
    -> group by course_id;
+----------+-----------+-----------+
| 课程ID   | 最高分    | 最低分    |
+----------+-----------+-----------+
|        1 |        33 |         6 |
|        2 |        34 |         8 |
|        3 |        89 |        55 |
|        4 |        96 |        34 |
+----------+-----------+-----------+
4 rows in set (0.00 sec)

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

mysql> select cname, count(cname)
    -> from score left join course on
    -> course.cid = score.course_id
    -> group by cname;
+--------+--------------+
| cname  | count(cname) |
+--------+--------------+
| 体育   |            4 |
| 物理   |            5 |
| 生物   |            5 |
| 美术   |            7 |
+--------+--------------+
4 rows in set (0.00 sec)

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

mysql> select *
    -> from student where
    -> sname like '皇%';
+-----+--------+--------+----------+
| sid | sname  | gender | class_id |
+-----+--------+--------+----------+
|  14 | 皇子   | male   |        4 |
+-----+--------+--------+----------+
1 row in set (0.00 sec)

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

mysql> select course_id, avg(number)
    -> from score
    -> group by course_id
    -> order by avg(number),course_id desc;
+-----------+-------------+
| course_id | avg(number) |
+-----------+-------------+
|         1 |     13.4000 |
|         2 |     13.6000 |
|         3 |     70.0000 |
|         4 |     72.0000 |
+-----------+-------------+
4 rows in set (0.00 sec)

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

mysql> select student.sid, student.sname, avg(number)
    -> from student
    -> left join score on
    -> student.sid = score.student_id
    -> group by student.sid
    -> having avg(number) >60;
+-----+-----------+-------------+
| sid | sname     | avg(number) |
+-----+-----------+-------------+
|   2 | 拉花      |     78.0000 |
|   4 | 小太妹    |     63.6667 |
+-----+-----------+-------------+

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

mysql> select student.sid, student.sname
    -> from student
    -> left join score on
    -> student.sid = score.student_id
    -> where
    -> course_id = 3 and
    -> number > 80;
+-----+-----------+
| sid | sname     |
+-----+-----------+
|   4 | 小太妹    |
+-----+-----------+
1 row in set (0.00 sec)

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

mysql> select cname, count(cname)
    -> from score left join course on
    -> course.cid = score.course_id
    -> group by cname;
+--------+--------------+
| cname  | count(cname) |
+--------+--------------+
| 体育   |            4 |
| 物理   |            5 |
| 生物   |            5 |
| 美术   |            7 |
+--------+--------------+
4 rows in set (0.00 sec)

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

mysql> select student.sid from
    -> student left join score on
    -> student.sid = score.student_id
    -> where course_id = 4 and
    -> number < 60
    -> order by number desc;
+-----+
| sid |
+-----+
|   5 |
+-----+
1 row in set (0.00 sec)

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

mysql> delete from score
    -> where course_id = 1
    -> and student_id = 2;
Query OK, 0 rows affected (0.00 sec)

猜你喜欢

转载自www.cnblogs.com/WQ577098649/p/11773984.html