查询国家代码范围

SQLSQLBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本项目中,你将学习如何使用 MySQL 中的多行子查询操作,检索与国家代码为“FRO”的国家使用相同官方语言的国家。

👀 预览

MariaDB [world]> SOURCE /home/labex/project/getCountryCode.sql;
+-------------+----------+
| CountryCode | Language |
+-------------+----------+
| DNK         | 丹麦语    |
| FRO         | 丹麦语    |
| FRO         | 法罗语    |
| GRL         | 丹麦语    |
+-------------+----------+
4 rows in set (0.002 sec)

🎯 任务

在本项目中,你将学习:

  • 如何使用 sudo 命令无密码访问 MySQL
  • 如何将 world.sql 文件中的数据导入 MySQL 数据库
  • 如何使用多行子查询编写 SQL 查询以检索所需信息
  • 如何在 MySQL 命令行界面中运行 SQL 查询

🏆 成果

完成本项目后,你将能够:

  • 理解 SQL 中多行子查询的概念
  • 使用复杂的 SQL 查询从数据库中检索特定数据
  • 应用你的 SQL 知识解决实际的数据检索问题

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL mysql(("MySQL")) -.-> mysql/DatabaseFunctionsandDataTypesGroup(["Database Functions and Data Types"]) mysql(("MySQL")) -.-> mysql/BasicKeywordsandStatementsGroup(["Basic Keywords and Statements"]) sql(("SQL")) -.-> sql/BasicSQLCommandsGroup(["Basic SQL Commands"]) sql(("SQL")) -.-> sql/DataManipulationandQueryingGroup(["Data Manipulation and Querying"]) mysql/BasicKeywordsandStatementsGroup -.-> mysql/use_database("Database Selection") sql/BasicSQLCommandsGroup -.-> sql/select("SELECT statements") sql/BasicSQLCommandsGroup -.-> sql/insert("INSERT INTO statements") mysql/BasicKeywordsandStatementsGroup -.-> mysql/select("Data Retrieval") mysql/BasicKeywordsandStatementsGroup -.-> mysql/source("External Code Execution") sql/BasicSQLCommandsGroup -.-> sql/create_table("CREATE TABLE statements") sql/DataManipulationandQueryingGroup -.-> sql/where("WHERE clause") sql/DataManipulationandQueryingGroup -.-> sql/subqueries("Subqueries") mysql/DatabaseFunctionsandDataTypesGroup -.-> mysql/database("DB Function - Info Retrieval") subgraph Lab Skills mysql/use_database -.-> lab-301396{{"查询国家代码范围"}} sql/select -.-> lab-301396{{"查询国家代码范围"}} sql/insert -.-> lab-301396{{"查询国家代码范围"}} mysql/select -.-> lab-301396{{"查询国家代码范围"}} mysql/source -.-> lab-301396{{"查询国家代码范围"}} sql/create_table -.-> lab-301396{{"查询国家代码范围"}} sql/where -.-> lab-301396{{"查询国家代码范围"}} sql/subqueries -.-> lab-301396{{"查询国家代码范围"}} mysql/database -.-> lab-301396{{"查询国家代码范围"}} end

访问 MySQL 并导入数据

在这一步中,你将学习如何使用 sudo 命令访问 MySQL,并将 world.sql 数据导入到 world 数据库中。

  1. 打开终端并运行以下命令启动 MySQL 服务:
sudo service mysql start
  1. 使用 sudo 命令访问 MySQL 命令行界面:
sudo mysql
  1. world.sql 数据导入到 MySQL 数据库:
MariaDB [None]> SOURCE /home/labex/project/world.sql;

这会将 world.sql 文件中的数据导入到 MySQL 数据库中。

现在你已成功访问 MySQL 并导入了必要的数据。让我们进入下一步。

检索与 FRO 使用相同官方语言的国家

在这一步中,你将编写一个 SQL 查询,以检索所有与国家代码为 FRO 的国家使用相同官方语言的国家。

  1. 打开 getCountryCode.sql 文件并添加以下 SQL 查询:
SELECT cl1.CountryCode, cl1.Language
FROM countrylanguage AS cl1
WHERE cl1.Language IN (
    -- 子查询,用于检索国家代码为 'FRO' 且 IsOfficial = 'T' 的国家的语言
    SELECT cl2.Language
    FROM countrylanguage AS cl2
    WHERE cl2.CountryCode = 'FRO' AND cl2.IsOfficial = 'T'
)
AND cl1.CountryCode IN (
    -- 子查询,用于检索与 FRO 具有相同语言且 IsOfficial = 'T' 的国家的 CountryCode
    SELECT cl3.CountryCode
    FROM countrylanguage AS cl3
    WHERE cl3.Language IN (
        -- 子查询,用于检索国家代码为 'FRO' 且 IsOfficial = 'T' 的国家的语言
        SELECT cl4.Language
        FROM countrylanguage AS cl4
        WHERE cl4.CountryCode = 'FRO' AND cl4.IsOfficial = 'T'
    )
    AND cl3.IsOfficial = 'T'
);

此查询使用多行子查询来检索与国家代码为 FRO 的国家使用相同官方语言的国家。

  1. 保存 getCountryCode.sql 文件。

现在你已经创建了用于检索所需信息的 SQL 查询。在下一步中,你将在 MySQL 中运行该查询。

运行 SQL 查询

在这一步中,你将运行存储在 getCountryCode.sql 文件中的 SQL 查询。

  1. 运行存储在 getCountryCode.sql 文件中的 SQL 查询:
MariaDB [world]> SOURCE /home/labex/project/getCountryCode.sql;

这将执行 SQL 查询并在终端中显示结果。

输出应类似于以下内容:

+-------------+----------+
| CountryCode | Language |
+-------------+----------+
| DNK         | 丹麦语    |
| FRO         | 丹麦语    |
| FRO         | 法罗语    |
| GRL         | 丹麦语    |
+-------------+----------+
4 rows in set (0.002 sec)

该查询已成功检索到与国家代码为 FRO 的国家使用相同官方语言的国家。

恭喜你!你已完成使用多行子查询操作查询国家代码范围的项目。

✨ 查看解决方案并练习

总结

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