匯入hellodb.sql生成資料庫 ,完成下列操作
阿新 • • 發佈:2022-12-05
匯入hellodb.sql生成資料庫 ,完成下列操作
目錄-
匯入hellodb.sql生成資料庫 ,完成下列操作
- 匯入hellodb.sql
-
查詢
- 1. 在students表中,查詢年齡大於25歲,且為男性的同學的名字和年齡
- 2.以ClassID為分組依據,顯示每組的平均年齡
- 3.顯示第2題中平均年齡大於30的分組及平均年齡
- 4.顯示以L開頭的名字的同學的資訊
- 5.顯示TeacherID非空的同學的相關資訊
- 6.以年齡排序後,顯示年齡最大的前10位同學的資訊
- 7.查詢年齡大於等於20歲,小於等於25歲的同學的資訊
- 8.以ClassID分組,顯示每班的同學的人數
- 9.以Gender分組,顯示其年齡之和
- 10.以ClassID分組,顯示其平均年齡大於25的班級
- 11.以Gender分組,顯示各組中年齡大於25的學員的年齡之和
- 12.顯示前5位同學的姓名、課程及成績
- 13.顯示其成績高於80的同學的名稱及課程
- 14.取每位同學各門課的平均成績,顯示成績前三名的同學的姓名和平均成績
- 15.顯示每門課程課程名稱及學習了這門課的同學的個數
- 16.顯示其年齡大於平均年齡的同學的名字
- 17.顯示其學習的課程為第1、2,4或第7門課的同學的名字
- 18.顯示其成員數最少為3個的班級的同學中年齡大於同班同學平均年齡的同學
- 19.統計各班級中年齡大於全校同學平均年齡的同學
匯入hellodb.sql
下載連結: https://wwi.lanzoup.com/ieK0q0htj9mh
[root@node1 ~]# mysql -uroot -p'Mysql@123' < /root/hellodb.sql [root@node1 ~]# mysql -uroot -p'Mysql@123' mysql> show databases; +--------------------+ | Database | +--------------------+ | hellodb | | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use hellodb; mysql> show tables; +-------------------+ | Tables_in_hellodb | +-------------------+ | classes | | coc | | courses | | scores | | students | | teachers | | toc | +-------------------+ 7 rows in set (0.00 sec)
查詢
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 |
+--------------+-----+
2.以ClassID為分組依據,顯示每組的平均年齡
mysql> SELECT ClassID,AVG(Age) FROM students WHERE ClassID IS NOT NULL 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 |
+---------+----------+
3.顯示第2題中平均年齡大於30的分組及平均年齡
mysql> SELECT ClassID,AVG(Age) FROM students WHERE ClassID IS NOT NULL GROUP BY ClassID HAVING AVG(Age)>30;
+---------+----------+
| ClassID | AVG(Age) |
+---------+----------+
| 2 | 36.0000 |
| 5 | 46.0000 |
+---------+----------+
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 |
+-------+-------------+-----+--------+---------+-----------+
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 |
+-------+-------------+-----+--------+---------+-----------+
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 |
| 3 | Xie Yanke | 53 | M | 2 | 16 |
| 6 | Shi Qing | 46 | M | 5 | NULL |
| 13 | Tian Boguang | 33 | M | 2 | NULL |
| 4 | Ding Dian | 32 | M | 4 | 4 |
| 24 | Xu Xian | 27 | M | NULL | NULL |
| 5 | Yu Yutong | 26 | M | 3 | 1 |
| 17 | Lin Chong | 25 | M | 4 | NULL |
| 11 | Yuan Chengzhi | 23 | M | 6 | NULL |
| 18 | Hua Rong | 23 | M | 7 | NULL |
+-------+---------------+-----+--------+---------+-----------+
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 |
+-------+---------------+-----+--------+---------+-----------+
或
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 |
+-------+---------------+-----+--------+---------+-----------+
8.以ClassID分組,顯示每班的同學的人數
mysql> SELECT ClassID,COUNT(StuID) FROM students GROUP BY ClassID;
+---------+--------------+
| ClassID | COUNT(StuID) |
+---------+--------------+
| 2 | 3 |
| 1 | 4 |
| 4 | 4 |
| 3 | 4 |
| 5 | 1 |
| 7 | 3 |
| 6 | 4 |
| NULL | 2 |
+---------+--------------+
9.以Gender分組,顯示其年齡之和
mysql> SELECT Gender,SUM(Age) FROM students GROUP BY Gender ;
+--------+----------+
| Gender | SUM(Age) |
+--------+----------+
| M | 495 |
| F | 190 |
+--------+----------+
10.以ClassID分組,顯示其平均年齡大於25的班級
mysql> SELECT ClassID,AVG(Age) FROM students GROUP BY ClassID HAVING AVG(Age)>25;
+---------+----------+
| ClassID | AVG(Age) |
+---------+----------+
| 2 | 36.0000 |
| 5 | 46.0000 |
| NULL | 63.5000 |
+---------+----------+
11.以Gender分組,顯示各組中年齡大於25的學員的年齡之和
mysql> SELECT Gender,SUM(Age) FROM students WHERE Age>25 GROUP BY Gender;
+--------+----------+
| Gender | SUM(Age) |
+--------+----------+
| M | 317 |
+--------+----------+
12.顯示前5位同學的姓名、課程及成績
mysql> SELECT name,Course,Score FROM students st INNER JOIN scores sc ON st.StuID=sc.StuID INNER JOIN courses co ON sc.CourseID=co.CourseID LIMIT 5;
+-------------+----------------+-------+
| name | Course | Score |
+-------------+----------------+-------+
| Shi Zhongyu | Kuihua Baodian | 77 |
| Shi Zhongyu | Weituo Zhang | 93 |
| Shi Potian | Kuihua Baodian | 47 |
| Shi Potian | Daiyu Zanghua | 97 |
| Xie Yanke | Kuihua Baodian | 88 |
+-------------+----------------+-------+
13.顯示其成績高於80的同學的名稱及課程
mysql> SELECT st.`Name`,sc.Score,cl.Class FROM students st INNER JOIN scores sc ON sc.StuID=st.StuID INNER JOIN classes cl ON st.ClassID=cl.ClassID WHERE sc.Score>80;
+-------------+-------+----------------+
| Name | Score | Class |
+-------------+-------+----------------+
| Shi Zhongyu | 93 | Emei Pai |
| Shi Potian | 97 | Shaolin Pai |
| Xie Yanke | 88 | Emei Pai |
| Ding Dian | 89 | Wudang Pai |
| Shi Qing | 96 | Riyue Shenjiao |
| Xi Ren | 86 | QingCheng Pai |
| Xi Ren | 83 | QingCheng Pai |
| Lin Daiyu | 93 | Ming Jiao |
+-------------+-------+----------------+
14.取每位同學各門課的平均成績,顯示成績前三名的同學的姓名和平均成績
mysql> SELECT st.name,avg(score) 平均成績 FROM students st INNER JOIN scores sc on st.StuID=sc.StuID GROUP BY st.`Name` ORDER BY 平均成績 DESC LIMIT 3;
+-------------+--------------+
| name | 平均成績 |
+-------------+--------------+
| Shi Qing | 96.0000 |
| Shi Zhongyu | 85.0000 |
| Xi Ren | 84.5000 |
+-------------+--------------+
15.顯示每門課程課程名稱及學習了這門課的同學的個數
mysql> SELECT Course,COUNT(StuID) FROM scores sc INNER JOIN courses co ON sc.CourseID=co.CourseID GROUP BY Course;
+----------------+--------------+
| Course | COUNT(StuID) |
+----------------+--------------+
| Kuihua Baodian | 4 |
| Weituo Zhang | 2 |
| Daiyu Zanghua | 2 |
| Hamo Gong | 3 |
| Dagou Bangfa | 2 |
| Taiji Quan | 1 |
| Jinshe Jianfa | 1 |
+----------------+--------------+
16.顯示其年齡大於平均年齡的同學的名字
mysql> SELECT `Name` FROM students st WHERE st.Age>(SELECT AVG(Age) FROM students);
+--------------+
| Name |
+--------------+
| Xie Yanke |
| Ding Dian |
| Shi Qing |
| Tian Boguang |
| Sun Dasheng |
+--------------+
17.顯示其學習的課程為第1、2,4或第7門課的同學的名字
mysql> SELECT`Name`,CourseID FROM students st INNER JOIN scores sc ON st.StuID=sc.StuID WHERE sc.CourseID IN (1,2,4) OR sc.CourseID = 7;
+-------------+----------+
| Name | CourseID |
+-------------+----------+
| Shi Zhongyu | 2 |
| Shi Potian | 2 |
| Xie Yanke | 2 |
| Ding Dian | 2 |
| Yu Yutong | 1 |
| Yu Yutong | 7 |
| Shi Qing | 1 |
| Xi Ren | 1 |
| Xi Ren | 7 |
| Lin Daiyu | 4 |
+-------------+----------+
18.顯示其成員數最少為3個的班級的同學中年齡大於同班同學平均年齡的同學
mysql> SELECT ClassID,COUNT(StuID),AVG(Age) FROM students GROUP BY ClassID HAVING COUNT(StuID)>=3;
+---------+--------------+----------+
| ClassID | COUNT(StuID) | AVG(Age) |
+---------+--------------+----------+
| 2 | 3 | 36.0000 |
| 1 | 4 | 20.5000 |
| 4 | 4 | 24.7500 |
| 3 | 4 | 20.2500 |
| 7 | 3 | 19.6667 |
| 6 | 4 | 20.7500 |
+---------+--------------+----------+
19.統計各班級中年齡大於全校同學平均年齡的同學
mysql> SELECT * FROM students WHERE Age > (SELECT AVG(Age) FROM students WHERE ClassID IS NOT NULL) AND ClassID IS NOT NULL;
+-------+--------------+-----+--------+---------+-----------+
| StuID | Name | Age | Gender | ClassID | TeacherID |
+-------+--------------+-----+--------+---------+-----------+
| 3 | Xie Yanke | 53 | M | 2 | 16 |
| 4 | Ding Dian | 32 | M | 4 | 4 |
| 5 | Yu Yutong | 26 | M | 3 | 1 |
| 6 | Shi Qing | 46 | M | 5 | NULL |
| 13 | Tian Boguang | 33 | M | 2 | NULL |
| 17 | Lin Chong | 25 | M | 4 | NULL |
+-------+--------------+-----+--------+---------+-----------+