既存の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つだけですが、複数のカラムを組み合わせた複合主キーを定義することも可能です。
-
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型カラムを持つテーブルを作成するそれで
-
MySQLのテーブルから主キーを削除する方法|DROP PRIMARY KEYの使い方を解説
MySQLでは主キーを削除できる? 結論から言うと、MySQLでは ALTER TABLE 文に DROP PRIMARY KEY 句を組み合わせることで、テーブルから主キー(プライマリーキー)を削除することが可能です。 基本構文 ALTER TABLE テーブル名 DROP PRIMARY KEY; それでは、実際にサンプルテーブルを作成し、主キーを削除する流れを順番に見ていきましょう。 主キーの削除手順 ステップ1:サンプルテーブルを作成する まず、UserId カラムに主キーを設定したテーブルを作成します。 mysql> CREATE TABLE DemoTable (