MySQLでKey=MULのカラムを作成する方法を解説
Key=MULのカラムを作成するにはADD KEYを使用する
MySQLでKey=MULを持つカラムを作成するには、ADD KEYを使用する必要があります。基本的な構文は以下の通りです。
ALTER TABLE yourTableName MODIFY COLUMN yourColumnName data type, ADD KEY(yourColumnName);
サンプルテーブルの作成
構文を理解するために、まず実際にテーブルを作成してみましょう。テーブル作成のクエリは以下の通りです。
mysql> create table Instructor
-> (
-> Instructor_Id int,
-> Instructor_Name varchar(30),
-> Instructor_CourseName varchar(100)
-> );
Query OK, 0 rows affected (0.63 sec)次に、DESCコマンドを使ってテーブルの構造を確認します。現時点では、どのカラムにもMULキーは設定されていません。
mysql> desc Instructor;
出力結果は以下の通りです。
+-----------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------------+--------------+------+-----+---------+-------+ | Instructor_Id | int(11) | YES | | NULL | | | Instructor_Name | varchar(30) | YES | | NULL | | | Instructor_CourseName | varchar(100) | YES | | NULL | | +-----------------------+--------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
カラムにKey=MULを設定する
ここで、カラム「Instructor_Id」をKey=MULに設定するクエリを実行します。AUTO_INCREMENTとNOT NULL制約も同時に設定しています。
mysql> alter table Instructor modify column Instructor_Id int NOT NULL AUTO_INCREMENT,
-> add key(Instructor_Id);
Query OK, 0 rows affected (2.88 sec)
Records: 0 Duplicates: 0 Warnings: 0再度DESCコマンドでテーブルの構造を確認してみましょう。
mysql> desc Instructor;
出力結果は以下の通りです。「Instructor_Id」のKey列にMULが表示され、auto_incrementも設定されていることがわかります。
+-----------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------------+--------------+------+-----+---------+----------------+ | Instructor_Id | int(11) | NO | MUL | NULL | auto_increment | | Instructor_Name | varchar(30) | YES | | NULL | | | Instructor_CourseName | varchar(100) | YES | | NULL | | +-----------------------+--------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
主キー以外のカラムにMULキーを追加する
主キー以外のカラムにインデックスを追加してKey=MULを表示させる場合は、以下のようなクエリを使用します。ここでは「Instructor_Name」カラムにNOT NULL制約とキーを設定しています。
mysql> alter table Instructor modify column Instructor_Name varchar(30) NOT NULL,
-> add key(Instructor_Name);
Query OK, 0 rows affected (2.77 sec)
Records: 0 Duplicates: 0 Warnings: 0最後にもう一度DESCコマンドでテーブルの構造を確認します。
mysql> desc Instructor;
出力結果を見ると、2つのカラムのKey列にMULが表示されていることが確認できます。
+-----------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------------+--------------+------+-----+---------+----------------+ | Instructor_Id | int(11) | NO | MUL | NULL | auto_increment | | Instructor_Name | varchar(30) | NO | MUL | NULL | | | Instructor_CourseName | varchar(100) | YES | | NULL | | +-----------------------+--------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
まとめ
MySQLでDESCコマンドの実行結果にKey=MULを表示させるには、ALTER TABLE文とADD KEYを組み合わせてインデックスを追加します。MULは、そのカラムが非ユニークなインデックスの一部であること、つまり同じ値が複数行に存在できることを示しています。AUTO_INCREMENTを設定する場合はNOT NULL制約が必須となる点にも注意しましょう。
-
MySQLでシーケンスを作成する方法|AUTO_INCREMENTの使い方とルールを解説
MySQLにおけるシーケンスとは?MySQLにおける「シーケンス」とは、1(指定した場合は0)から始まり、昇順で自動生成される整数の連番のことです。多くのアプリケーションでは、レコードを一意に識別するための番号を発行する目的でシーケンスが利用されています。具体例代表的な例としては、CRMシステムの顧客ID、人事管理システムの社員番号、設備管理システムの機器番号などが挙げられます。MySQLでシーケンスを自動的に作成するには、対象のカラムにAUTO_INCREMENT属性を設定します。通常は、主キー(PRIMARY KEY)カラムに対して適用するのが一般的です。AUTO_INCREMENTを使用
-
MySQLのAUTO_INCREMENTの使い方と実例解説
ここでは、MySQLにおける AUTO_INCREMENT の仕組みについて詳しく解説します。AUTO_INCREMENTとはAUTO_INCREMENT 属性は、新しい行に対して一意の識別子を自動的に生成するために使用されます。実際にどのように動作するのか、以下のクエリで確認してみましょう。サンプルクエリCREATE TABLE tableName ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); INSERT INTO tableName (name