介绍
在这个项目中,你将学习如何修改 MySQL 数据库中 countrylanguage 表的主键。初始主键仅基于 CountryCode 列,但为了更好地组织数据,你将使用 CountryCode 和 Language 列创建一个复合主键。
👀 预览
MariaDB [world]> DESC countrylanguage;
+-------------+---------------+------+-----+---------+-------+
| 字段 | 类型 | 空值 | 键 | 默认值 | 额外 |
+-------------+---------------+------+-----+---------+-------+
| CountryCode | char(3) | 否 | 主键| | |
| Language | char(30) | 否 | 主键| | |
| IsOfficial | enum('T','F') | 否 | | F | |
| Percentage | decimal(4,1) | 否 | | 0.0 | |
+-------------+---------------+------+-----+---------+-------+
4 rows in set (0.001 sec)
🎯 任务
在这个项目中,你将学习:
- 如何使用
sudo命令无密码访问 MySQL - 如何将 SQL 文件中的数据导入到 MySQL 数据库
- 如何将表的主键修改为复合键
🏆 成果
完成这个项目后,你将能够:
- 理解使用复合主键对更好地组织数据的重要性
- 自信地对 MySQL 表的主键结构进行更改
- 应用你的 SQL 语句知识来实现所需的数据库修改
访问 MySQL 并导入数据
在这一步中,你将学习如何使用 sudo 命令无密码访问 MySQL,并将 /home/labex/project/world.sql 中的数据导入到 MySQL 中。
- 打开一个终端并运行以下命令来启动 MySQL 服务:
sudo service mysql start
- 使用
sudo命令无密码访问 MySQL:
sudo mysql
- 将
/home/labex/project/world.sql中的数据导入到 MySQL 并切换到world数据库:
MariaDB [(none)]> SOURCE /home/labex/project/world.sql;
修改主键
在这一步中,你将学习如何将 countrylanguage 表的主键修改为由 CountryCode 和 Language 组成的复合键。
- 打开
changePri.sql文件。 - 将以下 SQL 语句添加到
changePri.sql文件中:
-- 删除原始主键约束
ALTER TABLE countrylanguage DROP PRIMARY KEY;
-- 添加复合主键约束
ALTER TABLE countrylanguage ADD PRIMARY KEY (CountryCode, Language);
- 保存
changePri.sql文件。 - 在 MySQL 中运行
changePri.sql脚本:
MariaDB [world]> SOURCE /home/labex/project/changePri.sql;
- 验证
countrylanguage表的更改:
MariaDB [world]> DESC countrylanguage;
输出现在应显示由 CountryCode 和 Language 组成的复合主键。
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| CountryCode | char(3) | NO | PRI | | |
| Language | char(30) | NO | PRI | | |
| IsOfficial | enum('T','F') | NO | | F | |
| Percentage | decimal(4,1) | NO | | 0.0 | |
+-------------+---------------+------+-----+---------+-------+
4 rows in set (0.001 sec)
总结
恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。



