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

MySQLのALTER TABLEでAUTO_INCREMENTを追加する方法を徹底解説

MySQLで既存テーブルのカラムにAUTO_INCREMENT(自動採番)を追加したい場合は、ALTER TABLEコマンドを使用します。この記事では、基本的な構文から実際の動作確認まで、具体例を交えてわかりやすく解説します。

AUTO_INCREMENTを追加する基本構文

既存のカラムにAUTO_INCREMENTを設定するには、以下の構文を使用します。

ALTER TABLE テーブル名 CHANGE カラム名 カラム名 データ型 AUTO_INCREMENT PRIMARY KEY;

ポイントは、AUTO_INCREMENTを設定するカラムがキー(PRIMARY KEYなど)である必要がある点です。そのため、上記のようにPRIMARY KEYを同時に指定するのが一般的です。

サンプルテーブルの作成

まず、動作を確認するためにカラムを1つだけ持つシンプルなテーブルを作成しましょう。

mysql> create table AlterTableToAddAutoIncrement
   -> (
   -> StudentId int
   -> );
Query OK, 0 rows affected (0.57 sec)

このテーブルの「StudentId」カラムは、現時点では単なるint型のカラムです。

ALTER文でAUTO_INCREMENTを設定する

次に、基本構文に従って「StudentId」カラムにAUTO_INCREMENTとPRIMARY KEYを設定します。実行するクエリは以下の通りです。

mysql> alter table AlterTableToAddAutoIncrement change StudentId StudentId int AUTO_INCREMENT Primary key;
Query OK, 0 rows affected (1.93 sec)
Records: 0 Duplicates: 0 Warnings: 0

これで「StudentId」カラムにAUTO_INCREMENTが追加されました。CHANGE句では「既存カラム名 新カラム名 データ型」の順で指定するため、カラム名を変更せずに属性だけ変えたい場合は、同じカラム名を2回記述します。

動作確認:値を指定せずにレコードを挿入

AUTO_INCREMENTが正しく機能しているか確認するために、値を一切指定せずにレコードを挿入してみましょう。

mysql> insert into AlterTableToAddAutoIncrement values();
Query OK, 1 row affected (0.16 sec)
mysql> insert into AlterTableToAddAutoIncrement values();
Query OK, 1 row affected (0.16 sec)
mysql> insert into AlterTableToAddAutoIncrement values();
Query OK, 1 row affected (0.33 sec)

値を指定しなくてもエラーにならずに挿入できていれば、AUTO_INCREMENTが有効になっています。

挿入結果の確認

すべてのレコードを表示してみます。

mysql> select * from AlterTableToAddAutoIncrement;

出力結果は以下の通りです。

+-----------+
| StudentId |
+-----------+
|         1 |
|         2 |
|         3 |
+-----------+
3 rows in set (0.00 sec)

このように、値を指定しなくても1、2、3と自動的に連番が採番されていることが確認できます。

補足:MODIFY句を使う方法と開始値の変更

カラム名をそのままに属性だけ変更する場合は、CHANGEの代わりにMODIFY句を使うこともできます。

ALTER TABLE テーブル名 MODIFY カラム名 データ型 AUTO_INCREMENT PRIMARY KEY;

また、連番の開始値を変更したい場合は、以下のようにAUTO_INCREMENTの値を指定します。

ALTER TABLE テーブル名 AUTO_INCREMENT = 100;

これにより、次に挿入されるレコードから100番以降の連番が採番されるようになります。

まとめ

MySQLで既存テーブルのカラムにAUTO_INCREMENTを追加するには、ALTER TABLE ... CHANGE(またはMODIFY)コマンドを使い、AUTO_INCREMENTとPRIMARY KEYを同時に指定します。追加後は、値を指定せずにINSERTを実行して連番が正しく採番されるか確認しておくと安心です。

  1. MySQLで日付型カラムにNULLを挿入する方法|ALTER TABLEによるカラム定義の変更手順

    日付型(DATE)カラムにNULLを挿入したい場合、ALTER TABLE文とMODIFY句を使って、カラム定義をNULL許可に変更する必要があります。基本の構文alter table テーブル名 modify column カラム名 date NULL;既存のテーブル構造はそのままに、指定したカラムだけをNULLを許容する形へ変更できます。検証用テーブルを作成するまず、日付カラムをNOT NULLとして定義したテーブルを作成します。mysql> create table DemoTable ( ShippingDate date NOT NULL ); Query OK, 0

  2. MySQLのALTER TABLEで一意制約(UNIQUE)を追加する方法

    MySQLでは、ALTER TABLE文を使うことで、すでに作成済みのテーブルに対して後から一意制約(UNIQUE制約)を追加できます。一意制約を設定すると、指定したカラム(または複数カラムの組み合わせ)に重複した値を挿入できなくなり、データの整合性を保つことができます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstName(名)」と「LastName(姓)」の2つのカラムを持つテーブルを用意します。mysql> create table DemoTable1811 ( FirstName varchar(20), Las