countrylanguage テーブルの主キーを変更する

MySQLBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、MySQL データベースのcountrylanguageテーブルの主キーを変更する方法を学びます。初期の主キーはCountryCode列のみに基づいていましたが、より良好な組織化のために、CountryCodeLanguageの両方の列を使用して複合主キーを作成します。

👀 プレビュー

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 にインポートする方法を学びます。

  1. ターミナルを開き、次のコマンドを実行して MySQL サービスを起動します。
sudo service mysql start
  1. パスワードなしでsudoコマンドを使用して MySQL にアクセスします。
sudo mysql
  1. /home/labex/project/world.sqlからのデータを MySQL にインポートし、worldデータベースに切り替えます。
MariaDB [(none)]> SOURCE /home/labex/project/world.sql;

主キーを変更する

このステップでは、countrylanguageテーブルの主キーをCountryCodeLanguageから構成される複合キーに変更する方法を学びます。

  1. changePri.sqlファイルを開きます。
  2. changePri.sqlファイルに次の SQL ステートメントを追加します。
-- 元の主キー制約を削除する
ALTER TABLE countrylanguage DROP PRIMARY KEY;

-- 複合主キー制約を追加する
ALTER TABLE countrylanguage ADD PRIMARY KEY (CountryCode, Language);
  1. changePri.sqlファイルを保存します。
  2. MySQL でchangePri.sqlスクリプトを実行します。
MariaDB [world]> SOURCE /home/labex/project/changePri.sql;
  1. countrylanguageテーブルの変更を確認します。
MariaDB [world]> DESC countrylanguage;

出力には、CountryCodeLanguageから構成される複合主キーが表示されるはずです。

+-------------+---------------+------+-----+---------+-------+
| 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 でさらに多くの実験を行って練習してください。

✨ 解答を確認して練習✨ 解答を確認して練習