修改 MySQL 数据库表约束

SQLSQLBeginner
立即练习

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

简介

在本项目中,你将学习如何修改 MySQL 数据库中的 countrylanguage 表,即从 IsOfficial 字段中移除 “非空” 约束。

👀 预览

MariaDB [world]> DESC countrylanguage;
+-------------+---------------+------+-----+---------+-------+
| 字段         | 类型          | 空值 | 键  | 默认值    | 额外  |
+-------------+---------------+------+-----+---------+-------+
| CountryCode | char(3)       | 否   | 主键|         |       |
| Language    | char(30)      | 否   | 主键|         |       |
| IsOfficial  | enum('T','F') | 是   |     | NULL    |       |
| Percentage  | decimal(4,1)  | 否   |     | 0.0     |       |
+-------------+---------------+------+-----+---------+-------+
4 rows in set (0.002 sec)

🎯 任务

在本项目中,你将学习:

  • 如何启动 MySQL 数据库并使用 sudo 命令访问它
  • 如何将 world.sql 数据文件导入到 MySQL 数据库中
  • 如何通过从 IsOfficial 字段中移除 “非空” 约束来修改 countrylanguage
  • 如何验证对 countrylanguage 表所做的更改

🏆 成果

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

  • 了解如何使用命令行界面操作 MySQL 数据库
  • 通过更改字段约束来修改表结构
  • 通过描述表结构来验证对表所做的更改

启动 MySQL 数据库并访问 MySQL

在本步骤中,你将学习如何启动 MySQL 数据库,并使用 sudo 命令在无需密码的情况下访问它。

  1. 启动 MySQL 数据库服务:
sudo service mysql start
  1. 访问 MySQL 命令行界面:
sudo mysql

现在你已准备好操作 MySQL 数据库。

导入世界数据库

在本步骤中,你将学习如何将 world.sql 数据文件导入到 MySQL 数据库中,并切换到 world 数据库。

  1. 导入 world.sql 数据文件:
MariaDB [None]> SOURCE /home/labex/project/world.sql;
  1. 切换到 world 数据库:
MariaDB [None]> USE world;

现在你已加载了 world 数据库并准备好进行操作。

修改 countrylanguage

在本步骤中,你将学习如何从 countrylanguage 表的 IsOfficial 字段中移除 “非空” 约束。

  1. 在文本编辑器中打开 changeNull.sql 文件。
  2. 向该文件中添加以下 SQL 语句:
ALTER TABLE countrylanguage MODIFY COLUMN IsOfficial ENUM('T', 'F') NULL;

此语句将从 countrylanguage 表的 IsOfficial 字段中移除 “非空” 约束。

  1. 保存 changeNull.sql 文件。

执行 changeNull.sql 脚本

在本步骤中,你将学习如何在 MySQL 命令行界面中执行 changeNull.sql 脚本。

  1. 在 MySQL 命令行界面中,运行以下命令来执行 changeNull.sql 脚本:
MariaDB [world]> SOURCE /home/labex/project/changeNull.sql;

这将执行 changeNull.sql 文件中的 SQL 语句并修改 countrylanguage 表。

验证更改

在本步骤中,你将学习如何验证对 countrylanguage 表所做的更改。

  1. 在 MySQL 命令行界面中,运行以下命令来描述 countrylanguage 表:
MariaDB [world]> DESC countrylanguage;

输出应显示 “非空” 约束已从 IsOfficial 字段中移除。

+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| CountryCode | char(3)       | NO   | PRI |         |       |
| Language    | char(30)      | NO   | PRI |         |       |
| IsOfficial  | enum('T','F') | YES  |     | NULL    |       |
| Percentage  | decimal(4,1)  | NO   |     | 0.0     |       |
+-------------+---------------+------+-----+---------+-------+
4 rows in set (0.002 sec)

恭喜!你已成功通过从 IsOfficial 字段中移除 “非空” 约束来修改 countrylanguage 表。

✨ 查看解决方案并练习

总结

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