ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Mysql入门练习题

2022-08-25 22:01:17  阅读:174  来源: 互联网

标签:练习题 classid 入门 students age Mysql NULL select name


1、在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄
mysql> select name,age from students where age>25 and gender='M';
+---------------+-----+
| name          | age |
+---------------+-----+
| Xie Yanke     |  53 |
| Ding Dian     |  32 |
| Yu Yutong     |  26 |
| Shi Qing      |  46 |
| Tian Boguang  |  33 |
| Xu Xian       |  27 |
| Sun Dasheng   | 100 |
| Song Jiang    |  45 |
| Zhang Sanfeng |  94 |
+---------------+-----+
9 rows in set (0.00 sec)   
2、以ClassID为分组依据,显示每组的平均年龄
mysql> select classid,avg(age) from students group by classid;
+---------+----------+
| classid | avg(age) |
+---------+----------+
|       2 |  36.0000 |
|       1 |  20.5000 |
|       4 |  24.7500 |
|       3 |  20.2500 |
|       5 |  46.0000 |
|       7 |  19.6667 |
|       6 |  20.7500 |
|    NULL |  58.2500 |
+---------+----------+
8 rows in set (0.00 sec)

3、显示第2题中平均年龄大于30的分组及平均年龄
mysql> select classid,avg(age) from students group by classid having avg(age)>30;
+---------+----------+
| classid | avg(age) |
+---------+----------+
|       2 |  36.0000 |
|       5 |  46.0000 |
|    NULL |  58.2500 |
+---------+----------+
3 rows in set (0.00 sec)

4、显示以L开头的名字的同学的信息
mysql> select * from students where name like 'l%';
+-------+--------------+-----+--------+---------+-----------+
| StuID | Name         | Age | Gender | ClassID | TeacherID |
+-------+--------------+-----+--------+---------+-----------+
|     8 | Lin Daiyu    |  17 | F      |       7 |      NULL |
|    14 | Lu Wushuang  |  17 | F      |       3 |      NULL |
|    17 | Lin Chong    |  25 | M      |       4 |      NULL |
|    27 | li           |  10 | F      |    NULL |      NULL |
|    31 | Lin Chaoying |  93 | F      |    NULL |      NULL |
+-------+--------------+-----+--------+---------+-----------+
5 rows in set (0.00 sec)

5、显示TeacherID非空的同学的相关信息
mysql> select * from students where teacherid is not null;
+-------+-------------+-----+--------+---------+-----------+
| StuID | Name        | Age | Gender | ClassID | TeacherID |
+-------+-------------+-----+--------+---------+-----------+
|     1 | Shi Zhongyu |  22 | M      |       2 |         3 |
|     2 | Shi Potian  |  22 | M      |       1 |         7 |
|     3 | Xie Yanke   |  53 | M      |       2 |        16 |
|     4 | Ding Dian   |  32 | M      |       4 |         4 |
|     5 | Yu Yutong   |  26 | M      |       3 |         1 |
+-------+-------------+-----+--------+---------+-----------+
5 rows in set (0.00 sec)

6、以年龄排序后,显示年龄最大的前10位同学的信息
mysql> select * from students order by age desc limit 10;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name          | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
|    25 | Sun Dasheng   | 100 | M      |    NULL |      NULL |
|    29 | Zhang Sanfeng |  94 | M      |    NULL |      NULL |
|    31 | Lin Chaoying  |  93 | F      |    NULL |      NULL |
|    30 | Miejue Shitai |  77 | F      |    NULL |      NULL |
|     3 | Xie Yanke     |  53 | M      |       2 |        16 |
|     6 | Shi Qing      |  46 | M      |       5 |      NULL |
|    28 | Song Jiang    |  45 | M      |    NULL |      NULL |
|    13 | Tian Boguang  |  33 | M      |       2 |      NULL |
|     4 | Ding Dian     |  32 | M      |       4 |         4 |
|    24 | Xu Xian       |  27 | M      |    NULL |      NULL |
+-------+---------------+-----+--------+---------+-----------+
10 rows in set (0.00 sec)

7、查询年龄大于等于20岁,小于等于25岁的同学的信息
mysql> select * from students where age>=20 and age<=25;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name          | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
|     2 | Shi Potian    |  22 | M      |       1 |         7 |
|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
|    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
|    17 | Lin Chong     |  25 | M      |       4 |      NULL |
|    18 | Hua Rong      |  23 | M      |       7 |      NULL |
|    21 | Huang Yueying |  22 | F      |       6 |      NULL |
|    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
|    23 | Ma Chao       |  23 | M      |       4 |      NULL |
|    26 | wang          |  20 | M      |    NULL |      NULL |
+-------+---------------+-----+--------+---------+-----------+
11 rows in set (0.00 sec)
mysql> select * from students where age  between 20 and 25;
+-------+---------------+-----+--------+---------+-----------+
| StuID | Name          | Age | Gender | ClassID | TeacherID |
+-------+---------------+-----+--------+---------+-----------+
|     1 | Shi Zhongyu   |  22 | M      |       2 |         3 |
|     2 | Shi Potian    |  22 | M      |       1 |         7 |
|     9 | Ren Yingying  |  20 | F      |       6 |      NULL |
|    11 | Yuan Chengzhi |  23 | M      |       6 |      NULL |
|    16 | Xu Zhu        |  21 | M      |       1 |      NULL |
|    17 | Lin Chong     |  25 | M      |       4 |      NULL |
|    18 | Hua Rong      |  23 | M      |       7 |      NULL |
|    21 | Huang Yueying |  22 | F      |       6 |      NULL |
|    22 | Xiao Qiao     |  20 | F      |       1 |      NULL |
|    23 | Ma Chao       |  23 | M      |       4 |      NULL |
|    26 | wang          |  20 | M      |    NULL |      NULL |
|    33 | hello world   |  20 | F      |    NULL |         1 |
+-------+---------------+-----+--------+---------+-----------+
12 rows in set (0.00 sec)


8、以ClassID分组,显示每班的同学的人数
mysql> select classid,count(*) from students group by classid;
+---------+----------+
| classid | count(*) |
+---------+----------+
|       2 |        3 |
|       1 |        4 |
|       4 |        4 |
|       3 |        4 |
|       5 |        1 |
|       7 |        3 |
|       6 |        4 |
|    NULL |        8 |
+---------+----------+
8 rows in set (0.00 sec)

9、以Gender分组,显示其年龄之和
mysql> select gender,sum(age) from students group by gender;
+--------+----------+
| gender | sum(age) |
+--------+----------+
| M      |      649 |
| F      |      390 |
+--------+----------+
2 rows in set (0.00 sec)
10、以ClassID分组,显示其平均年龄大于25的班级
mysql> select ifnull(classid,'无班级'),avg(age) from students group by classid having avg((age)>25;
+-----------------------------+----------+
| ifnull(classid,'无班级')    | avg(age) |
+-----------------------------+----------+
| 2                           |  36.0000 |
| 5                           |  46.0000 |
| 无班级                      |  48.1000 |
+-----------------------------+----------+
3 rows in set (0.00 sec)

11、以Gender分组,显示各组中年龄大于25的学员的年龄之和
mysql> select gender,sum(age) from students where age>25 group by gender;
+--------+----------+
| gender | sum(age) |
+--------+----------+
| M      |      433 |
| F      |      170 |
+--------+----------+
2 rows in set (0.00 sec
12、显示前5位同学的姓名、课程及成绩
mysql> select name,course,score from students inner join scores on students.stuid=scores.stuid inner join courses on scores.courseid=courses.courseid order by score desc limit 5; 
+-------------+----------------+-------+
| name        | course         | score |
+-------------+----------------+-------+
| Shi Potian  | Daiyu Zanghua  |    97 |
| Shi Qing    | Hamo Gong      |    96 |
| Shi Zhongyu | Weituo Zhang   |    93 |
| Lin Daiyu   | Jinshe Jianfa  |    93 |
| Ding Dian   | Kuihua Baodian |    89 |
+-------------+----------------+-------+
5 rows in set (0.00 sec)

13、显示其成绩高于80的同学的名称及课程
mysql> select name,score,course from students inner join scores on students.stuid=scores.stuid join courses on scores.courseid=courses.courseid where score>80;
+-------------+-------+----------------+
| name        | score | course         |
+-------------+-------+----------------+
| Shi Zhongyu |    93 | Weituo Zhang   |
| Shi Potian  |    97 | Daiyu Zanghua  |
| Xie Yanke   |    88 | Kuihua Baodian |
| Ding Dian   |    89 | Kuihua Baodian |
| Shi Qing    |    96 | Hamo Gong      |
| Xi Ren      |    86 | Hamo Gong      |
| Xi Ren      |    83 | Dagou Bangfa   |
| Lin Daiyu   |    93 | Jinshe Jianfa  |
+-------------+-------+----------------+
8 rows in set (0.00 sec)
14、取每位同学各门课的平均成绩,显示成绩前三名的同学的姓名和平均成绩
mysql> select name,course,avg(score) from students inner join scores on students.stuid=scores.stuid inner join courses on scores.courseid=courses.courseid group by name,course order by avg(score) desc limit 3;
+------------+---------------+------------+
| name       | course        | avg(score) |
+------------+---------------+------------+
| Shi Potian | Daiyu Zanghua |    97.0000 |
| Shi Qing   | Hamo Gong     |    96.0000 |
| Lin Daiyu  | Jinshe Jianfa |    93.0000 |
+------------+---------------+------------+
3 rows in set (0.00 sec)

15、显示每门课程课程名称及学习了这门课的同学的个数
mysql> select course,count(name) from students inner join scores on students.stuid=scores.stuid inner join courses on scores.courseid=courses.courseid group by course;
+----------------+-------------+
| course         | count(name) |
+----------------+-------------+
| Kuihua Baodian |           4 |
| Weituo Zhang   |           2 |
| Daiyu Zanghua  |           2 |
| Hamo Gong      |           3 |
| Dagou Bangfa   |           2 |
| Taiji Quan     |           1 |
| Jinshe Jianfa  |           1 |
+----------------+-------------+
7 rows in set (0.00 sec)

16、显示其年龄大于平均年龄的同学的名字
mysql> select name,age from students where age>(select avg(age) from students);
+---------------+-----+
| name          | age |
+---------------+-----+
| Xie Yanke     |  53 |
| Ding Dian     |  32 |
| Shi Qing      |  46 |
| Tian Boguang  |  33 |
| Sun Dasheng   |  77 |
| Song Jiang    |  45 |
| Zhang Sanfeng |  94 |
| Miejue Shitai |  77 |
| Lin Chaoying  |  93 |
+---------------+-----+
9 rows in set (0.00 sec)
17、显示其学习的课程为第1、2,4或第7门课的同学的名字
mysql> select name,classid from students  where classid rlike '1|2|4|7';
+--------------+---------+
| name         | classid |
+--------------+---------+
| Shi Zhongyu  |       2 |
| Shi Potian   |       1 |
| Xie Yanke    |       2 |
| Ding Dian    |       4 |
| Lin Daiyu    |       7 |
| Wen Qingqing |       1 |
| Tian Boguang |       2 |
| Duan Yu      |       4 |
| Xu Zhu       |       1 |
| Lin Chong    |       4 |
| Hua Rong     |       7 |
| Diao Chan    |       7 |
| Xiao Qiao    |       1 |
| Ma Chao      |       4 |
+--------------+---------+
14 rows in set (0.00 sec)

mysql> select name,classid from students where classid in (1,2,4,7);
+--------------+---------+
| name         | classid |
+--------------+---------+
| Shi Zhongyu  |       2 |
| Shi Potian   |       1 |
| Xie Yanke    |       2 |
| Ding Dian    |       4 |
| Lin Daiyu    |       7 |
| Wen Qingqing |       1 |
| Tian Boguang |       2 |
| Duan Yu      |       4 |
| Xu Zhu       |       1 |
| Lin Chong    |       4 |
| Hua Rong     |       7 |
| Diao Chan    |       7 |
| Xiao Qiao    |       1 |
| Ma Chao      |       4 |
+--------------+---------+
14 rows in set (0.00 sec)


18、显示其成员数最少为3个的班级的同学中年龄大于同班同学平均年龄的同学(未理解)
mysql> select s.name,s.classid,s.age,s3.ave from students s left join (select classid,avg(age) ave from students group by classid having count(*)>=3 ) s3 on s.classid=s3.classid where s.classid in (select classid from students group by classid having count(*)>=3) and s.age>s3.ave;
+---------------+---------+-----+---------+
| name          | classid | age | ave     |
+---------------+---------+-----+---------+
| Shi Potian    |       1 |  22 | 20.5000 |
| Ding Dian     |       4 |  32 | 24.7500 |
| Yu Yutong     |       3 |  26 | 20.2500 |
| Yuan Chengzhi |       6 |  23 | 20.7500 |
| Xu Zhu        |       1 |  21 | 20.5000 |
| Lin Chong     |       4 |  25 | 24.7500 |
| Hua Rong      |       7 |  23 | 19.6667 |
| Huang Yueying |       6 |  22 | 20.7500 |
+---------------+---------+-----+---------+
8 rows in set (0.00 sec)

19、统计各班级中年龄大于全校同学平均年龄的同学
mysql> select name,class,age from students left join classes on students.classid=classes.classid where age>(select avg(age) from students) and class is not null;
+--------------+----------------+-----+
| name         | class          | age |
+--------------+----------------+-----+
| Ding Dian    | Wudang Pai     |  32 |
| Shi Qing     | Riyue Shenjiao |  46 |
| Tian Boguang | Emei Pai       |  33 |
+--------------+----------------+-----+
3 rows in set (0.00 sec)

标签:练习题,classid,入门,students,age,Mysql,NULL,select,name
来源: https://www.cnblogs.com/wdy001/p/16625881.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有