1. 程式人生 > 其它 >匯入hellodb.sql生成資料庫 ,完成下列操作

匯入hellodb.sql生成資料庫 ,完成下列操作

匯入hellodb.sql生成資料庫 ,完成下列操作

目錄

匯入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 |
+-------+--------------+-----+--------+---------+-----------+