はじめに
このプロジェクトでは、MySQL データベースのcountrylanguageテーブルの主キーを変更する方法を学びます。初期の主キーはCountryCode列のみに基づいていましたが、より良好な組織化のために、CountryCodeとLanguageの両方の列を使用して複合主キーを作成します。
👀 プレビュー
MariaDB [world]> DESC countrylanguage;
+-------------+---------------+------+-----+---------+-------+
| 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)
🎯 タスク
このプロジェクトでは、以下を学びます。
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ファイルを開きます。changePri.sqlファイルに次の 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 でさらに多くの実験を行って練習してください。



