查询城市名称及所属国家

SQLBeginner
立即练习

介绍

在这个项目中,你将学习如何在 MySQL 中对 citycountrycountrylanguage 表执行等值连接查询。目标是从这些表中检索城市名称、对应的国家名称和语言。

👀 预览

MariaDB [world]> SOURCE /home/labex/project/getCountryNameAndLanguage.sql;
+----------------+-------------+------------+
| CityName       | CountryName | Language   |
+----------------+-------------+------------+
| 奥兰治斯塔德     | 阿鲁巴       | 荷兰语      |
| 奥兰治斯塔德     | 阿鲁巴       | 英语        |
| 奥兰治斯塔德     | 阿鲁巴       | 帕皮阿门托语 |
| 奥兰治斯塔德     | 阿鲁巴       | 西班牙语    |
| 喀布尔          | 阿富汗       | 俾路支语    |
| 坎大哈          | 阿富汗       | 俾路支语    |
| 赫拉特          | 阿富汗       | 俾路支语    |
| 马扎里沙里夫     | 阿富汗       | 俾路支语    |
| 喀布尔          | 阿富汗       | 达里语      |
| 坎大哈          | 阿富汗       | 达里语      |
+----------------+-------------+------------+
10 rows in set (0.001 sec)

🎯 任务

在这个项目中,你将学习:

  • 如何使用 sudo 命令无密码访问 MySQL
  • 如何将 world.sql 脚本中的数据导入 MySQL
  • 如何编写等值连接查询以从表中检索所需信息
  • 如何将查询结果限制为前 10 行

🏆 成果

完成这个项目后,你将能够:

  • 理解 SQL 连接的概念以及如何有效地使用它们
  • 从关系数据库中的多个表中检索数据
  • 根据需要应用 SQL 查询来过滤和限制结果
  • 获得使用 MySQL 数据库的实践经验

访问 MySQL 并导入数据

在这一步中,你将学习如何使用 sudo 命令无密码访问 MySQL,并将提供的 world.sql 脚本中的数据导入 MySQL。

  1. 启动 MySQL 服务:
sudo service mysql start
  1. 访问 MySQL:
sudo mysql
  1. world.sql 脚本导入数据:
MariaDB [(none)]> SOURCE /home/labex/project/world.sql;
✨ 查看解决方案并练习

执行连接查询

在这一步中,你将学习如何执行一个等值连接查询,以便从 citycountrycountrylanguage 表中检索城市名称、对应的国家名称和语言。

  1. 打开 getCountryNameAndLanguage.sql 文件。
  2. 将以下代码添加到 getCountryNameAndLanguage.sql 文件中:
SELECT ci.Name AS CityName, co.Name AS CountryName, col.Language
FROM city AS ci
JOIN country AS co ON ci.CountryCode = co.Code
JOIN countrylanguage AS col ON co.Code = col.CountryCode
LIMIT 10;

此查询在 citycountrycountrylanguage 表之间执行等值连接,并将结果限制为前 10 行。查询输出包括 CityNameCountryNameLanguage 标题。

✨ 查看解决方案并练习

运行查询

在这一步中,你将学习如何在 MySQL 中运行 getCountryNameAndLanguage.sql 脚本。

  1. 在 MySQL 提示符下,运行以下命令来执行脚本:
MariaDB [world]> SOURCE /home/labex/project/getCountryNameAndLanguage.sql;

这将执行查询并在 MySQL 提示符中显示结果。

输出应类似于以下内容:

+----------------+-------------+------------+
| CityName       | CountryName | Language   |
+----------------+-------------+------------+
| 奥兰治斯塔德     | 阿鲁巴       | 荷兰语      |
| 奥兰治斯塔德     | 阿鲁巴       | 英语        |
| 奥兰治斯塔德     | 阿鲁巴       | 帕皮阿门托语 |
| 奥兰治斯塔德     | 阿鲁巴       | 西班牙语    |
| 喀布尔          | 阿富汗       | 俾路支语    |
| 坎大哈          | 阿富汗       | 俾路支语    |
| 赫拉特          | 阿富汗       | 俾路支语    |
| 马扎里沙里夫     | 阿富汗       | 俾路支语    |
| 喀布尔          | 阿富汗       | 达里语      |
| 坎大哈          | 阿富汗       | 达里语      |
+----------------+-------------+------------+
10 rows in set (0.001 sec)

恭喜!你已成功完成该项目。

✨ 查看解决方案并练习

总结

恭喜!你已完成这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。