MySQLで既存のカラムを主キーとして設定する方法
MySQLでは、ALTERコマンドを使うことで、すでに作成済みのテーブルにある既存のカラムを主キー(PRIMARY KEY)として設定できます。テーブルを作り直す必要はありません。
主キーを追加する基本構文
既存のカラムに主キーを追加するには、以下の構文を使用します。
ALTER TABLE テーブル名 ADD PRIMARY KEY(カラム名);
サンプルテーブルの作成
実際に既存のカラムを主キーとして設定する流れを見てみましょう。まず、主キーを持たないテーブルを作成します。
mysql> create table AddingPrimaryKeyDemo -> ( -> UniversityId int, -> UniversityName varchar(200) -> ); Query OK, 0 rows affected (1.16 sec)
上記のクエリでは、意図的に主キーを設定していません。DESCコマンドでテーブル構造を確認してみましょう。
mysql> desc AddingPrimaryKeyDemo;
実行結果は以下のとおりです。
+----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+-------+ | UniversityId | int(11) | YES | | NULL | | | UniversityName | varchar(200) | YES | | NULL | | +----------------+--------------+------+-----+---------+-------+ 2 rows in set (0.09 sec)
Key列が空欄になっていることから、この時点ではどのカラムにも主キーが設定されていないことがわかります。
ALTER TABLEで主キーを追加する
それでは、冒頭で紹介した構文を使って、既存のカラム「UniversityId」に主キーを追加します。
mysql> alter table AddingPrimaryKeyDemo add primary key(UniversityId); Query OK, 0 rows affected (1.48 sec) Records: 0 Duplicates: 0 Warnings: 0
これで「UniversityId」カラムが主キーとして設定されました。再度DESCコマンドを実行して、主キーが正しく反映されているか確認しましょう。
mysql> desc AddingPrimaryKeyDemo;
実行結果は以下のとおりです。
+----------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+-------+ | UniversityId | int(11) | NO | PRI | NULL | | | UniversityName | varchar(200) | YES | | NULL | | +----------------+--------------+------+-----+---------+-------+ 2 rows in set (0.04 sec)
実行結果のポイント
結果のKey列に「PRI」と表示されており、これにより主キーが正常に追加されたことが確認できます。また、Null列が「NO」に変わっている点にも注目してください。主キーに設定されたカラムはNULL値を許容しないため、自動的にNOT NULL制約が適用されます。
注意点
既存のカラムに主キーを追加する際は、以下の点に留意が必要です。
- 対象カラムに重複したデータやNULL値が含まれている場合、主キーの追加はエラーになります。事前にデータのクリーンアップを行いましょう。
- 主キーを設定すると自動的にインデックスが作成されるため、大規模なテーブルでは処理に時間がかかることがあります。
このように、ALTER TABLE ... ADD PRIMARY KEYを使えば、既存のテーブルを簡単に修正して主キーを設定できます。
-
MySQLの既存のカラムにNOT NULL制約を設定する方法
MySQLですでに存在するカラムにNOT NULL制約を追加するには、ALTER TABLE文を使用します。この記事では、実際のSQL例を使いながら、NOT NULL制約の設定方法とその動作確認の手順をわかりやすく解説します。 1. テーブルの作成 まず、検証用のサンプルテーブルを作成します。 mysql> create table DemoTable1949 ( UserId int, UserName varchar(20) ); Query OK, 0 rows affected (0.00 sec) この時点では、UserNameカラムにはNUL
-
MySQLで列にENUM型を設定する方法
```html MySQLでは、テーブルを作成する際に、あらかじめ決められた文字列のリストから値を選ばせたい列に対してENUM型を設定できます。ENUMは、指定した候補値以外のデータが登録されるのを防ぎたい場合に便利なデータ型です。ここでは、実際にテーブルを作成しながら基本的な使い方を見ていきましょう。ENUM型を含むテーブルを作成するまず、学生の点数と合否ステータスを管理するテーブルを作成します。「StudentStatus」列には「First」「Second」「Fail」の3つの値のみを許可するENUM型を設定しています。mysql> create table DemoTable20