MySQL 转换函数挑战

MySQLBeginner
立即练习

介绍

在本项目中,你将学习如何使用 MySQL 的常见转换函数从 personnel 数据库的 emp 表中提取相关信息。你将学习如何访问 MySQL、导入数据以及编写脚本来对数据执行各种日期和时间转换。

👀 预览

MariaDB [personnel]> SOURCE /home/labex/project/ConversionFunctions.sql;
+------------+------------+
| 入职日期 | 新日期     |
+------------+------------+
| 80-12      | 1980-12-31 |
| 81-02      | NULL       |
| 81-02      | NULL       |
| 81-04      | 1981-04-16 |
| 81-09      | NULL       |
| 81-05      | 1981-05-15 |
| 81-06      | 1981-06-23 |
| 87-06      | 1987-06-27 |
| 81-11      | 1981-11-31 |
| 81-09      | 1981-09-22 |
| 87-06      | 1987-06-27 |
| 81-12      | 1981-12-17 |
| 81-12      | 1981-12-17 |
| 82-01      | NULL       |
+------------+------------+
14 行已设置,4 个警告 (0.000 秒)

🎯 任务

在本项目中,你将学习:

  • 如何使用 sudo 命令无密码访问 MySQL
  • 如何将 SQL 文件中的数据导入 MySQL 数据库
  • 如何编写 SQL 脚本来使用 DATE_FORMAT() 和 STR_TO_DATE() 等函数执行日期和时间转换
  • 如何使用适当的别名显示转换函数的结果

🏆 成果

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

  • 理解如何使用 MySQL 的转换函数来操作和显示日期和时间数据
  • 编写 SQL 脚本来执行复杂的数据转换
  • 应用你对 MySQL 的知识来解决实际的数据处理问题

访问 MySQL 并导入数据

在本步骤中,你将学习如何使用 sudo 命令无密码访问 MySQL,并将 /home/labex/project/personnel.sql 中的数据导入到 personnel 数据库中。

  1. 启动 MySQL 服务:
sudo service mysql start
  1. 使用 sudo 命令无密码访问 MySQL:
sudo mysql
  1. 将 /home/labex/project/personnel.sql 中的数据导入到 personnel 数据库:
MariaDB [(none)]> SOURCE /home/labex/project/personnel.sql;

编写转换函数脚本

在本步骤中,你将学习如何编写 ConversionFunctions.sql 脚本,以便使用 MySQL 的常见转换函数从 personnel 数据库的 emp 表中提取相关信息。

  1. 打开 ConversionFunctions.sql 文件。
  2. 将以下 SQL 查询添加到 ConversionFunctions.sql 文件中:
SELECT DATE_FORMAT(hiredate, '%y-%m') AS `入职日期`,
       DATE_FORMAT(STR_TO_DATE(CONCAT(DATE_FORMAT(hiredate, '%Y%m%d') + 14), '%Y%m%d'), '%Y-%m-%d') AS `新日期`
FROM emp;

此查询执行以下任务:

  • 提取 emp 表中所有员工的入职日期和修订日期。
  • 以 yy-MM 格式显示入职日期。
  • 将入职日期加上 14 天,使用 STR_TO_DATE() 函数将其转换为日期格式,并以 yyyy-MM-dd 格式显示。
  • 使用别名 入职日期 和 新日期 来显示结果。
  1. 保存 ConversionFunctions.sql 文件。

运行转换函数脚本

在本步骤中,你将学习如何在 MySQL 中运行 ConversionFunctions.sql 脚本。

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

这将执行 ConversionFunctions.sql 文件中的 SQL 查询并显示结果。

输出应类似于以下内容:

+------------+------------+
| 入职日期 | 新日期     |
+------------+------------+
| 80-12      | 1980-12-31 |
| 81-02      | NULL       |
| 81-02      | NULL       |
| 81-04      | 1981-04-16 |
| 81-09      | NULL       |
| 81-05      | 1981-05-15 |
| 81-06      | 1981-06-23 |
| 87-06      | 1987-06-27 |
| 81-11      | 1981-11-31 |
| 81-09      | 1981-09-22 |
| 87-06      | 1987-06-27 |
| 81-12      | 1981-12-17 |
| 81-12      | 1981-12-17 |
| 82-01      | NULL       |
+------------+------------+
14 行已设置,4 个警告 (0.000 秒)

此输出显示了 emp 表中所有员工的入职日期和修订日期,入职日期格式为 yy-MM,修订日期格式为 yyyy-MM-dd。

总结

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

✨ 查看解决方案并练习✨ 查看解决方案并练习✨ 查看解决方案并练习