MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

既存のMySQLテーブルのカラムにPRIMARY KEY制約を追加する方法

MySQLでは、ALTER TABLEステートメントを使用することで、既存のテーブルのカラムに対してPRIMARY KEY(主キー)制約を後から追加できます。主キーを設定すると、そのカラムには重複した値やNULL値が許可されなくなり、テーブル内の各行を一意に識別できるようになります。

構文

ALTER TABLE table_name MODIFY colum_name datatype PRIMARY KEY;
                    OR
ALTER TABLE table_name ADD PRIMARY KEY (colum_name);

1つ目はMODIFY句でカラム定義を変更しながら主キーを設定する方法、2つ目はADD PRIMARY KEY句で直接主キーを追加する方法です。どちらを使っても結果は同じになります。

実行例

例として、次のような「Player」というテーブルが存在し、このテーブルの「ID」カラムにPRIMARY KEY制約を追加したいケースを考えてみましょう。

mysql> DESCRIBE Player;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID    |  int(11)    | YES  |     | NULL    |       |
| Name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

2 rows in set (0.04 sec)

ALTER TABLEコマンドを使って、「ID」カラムに主キーを追加します。

mysql> ALTER TABLE Player MODIFY ID INT PRIMARY KEY;
Query OK, 0 rows affected (0.22 sec)
Records: 0  Duplicates: 0  Warnings: 0

処理完了後、再度テーブル構造を確認してみます。

mysql> DESCRIBE Player;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID    |  int(11)    | NO   | PRI | NULL    |       |
| Name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

2 rows in set (0.04 sec)

上記の結果セットから、「ID」カラムのKey列が「PRI」に変わり、Null列が「NO」になっていることが確認できます。これは、MySQLが「ID」フィールドにPRIMARY KEY制約を正常に追加したことを示しています。

なお、同じ操作は以下のクエリでも実行可能です。

ALTER TABLE Player ADD PRIMARY KEY(ID);

注意点

  • 主キーを設定するカラムには、NULL値や重複した値が含まれていてはいけません。既存データにNULLや重複が存在する場合、制約の追加はエラーとなります。
  • 主キーを追加すると、該当カラムには自動的にNOT NULL属性が付与されます。
  • 1つのテーブルに設定できる主キーは1つだけですが、複数のカラムを組み合わせた複合主キーを定義することも可能です。
  1. MySQLでブール型(BOOLEAN)フィールドを追加する方法を徹底解説

    MySQLには厳密な意味での「ブール型」は存在せず、BOOLやBOOLEANとして定義した場合でも、内部的にはすべてTINYINT(1)として扱われます。つまり、tinyint(1)、bool、booleanの3つは完全なシノニム(同義語)です。MySQLにおける真偽値の扱いMySQLでは、0が偽(false)、0以外の数値が真(true)として解釈されます。PHPと同様に、0以外の任意の数値もtrueとして扱われる点に注意しましょう。実務上は、可読性を高めるためにtrue/falseリテラルを使うか、規約として0と1のみを使用するのが一般的です。BOOL型カラムを持つテーブルを作成するそれで

  2. MySQLのテーブルから主キーを削除する方法|DROP PRIMARY KEYの使い方を解説

    MySQLでは主キーを削除できる? 結論から言うと、MySQLでは ALTER TABLE 文に DROP PRIMARY KEY 句を組み合わせることで、テーブルから主キー(プライマリーキー)を削除することが可能です。 基本構文 ALTER TABLE テーブル名 DROP PRIMARY KEY; それでは、実際にサンプルテーブルを作成し、主キーを削除する流れを順番に見ていきましょう。 主キーの削除手順 ステップ1:サンプルテーブルを作成する まず、UserId カラムに主キーを設定したテーブルを作成します。 mysql> CREATE TABLE DemoTable (