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

MySQLで新しいカラムを追加しながらインデックスを作成する方法

MySQLでは、ALTER TABLEコマンドを使用することで、既存のテーブルに新しいカラム(列)を追加すると同時に、そのカラムに対するインデックスを作成することができます。この記事では、基本構文から実際の実行例、作成後の確認方法まで順を追って解説します。

基本構文

カラムの追加とインデックスの作成を一度に行う場合の基本構文は以下の通りです。

ALTER TABLE yourTableName ADD COLUMN yourColumnName dataType,
ADD INDEX(yourColumnName);

サンプルテーブルの作成

構文の動きを理解するために、まずはサンプルとなるテーブルを作成しましょう。テーブル作成用のクエリは次の通りです。

mysql> create table AddColumnAndIndexDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(100),
    -> Address varchar(200)
    -> );
Query OK, 0 rows affected (0.81 sec)

ここでは、自動採番される主キー「Id」と、「Name」「Address」の3つのカラムを持つテーブルを作成しました。

テーブル構造の確認

DESCコマンドを実行して、現在のテーブル構造を確認しておきましょう。

mysql> desc AddColumnAndIndexDemo;

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

+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| Id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| Name    | varchar(100) | YES  |     | NULL    |                |
| Address | varchar(200) | YES  |     | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
3 rows in set (0.03 sec)

現時点では、主キーの「Id」以外にインデックスは存在しません。

カラム追加とインデックス作成の実行

それでは、新しいカラム「Age」を追加し、同時にインデックスも作成してみます。実行するクエリは以下の通りです。

mysql> alter table AddColumnAndIndexDemo add column Age int, add index(Age);
Query OK, 0 rows affected (1.81 sec)
Records: 0 Duplicates: 0 Warnings: 0

このように、add columnadd indexを1つのALTER TABLE文にまとめて記述することで、一度の操作で両方の処理が完了します。

変更後のテーブル構造を再確認

もう一度DESCコマンドでテーブル構造を確認してみましょう。

mysql> desc AddColumnAndIndexDemo;

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

+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| Id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| Name    | varchar(100) | YES  |     | NULL    |                |
| Address | varchar(200) | YES  |     | NULL    |                |
| Age     | int(11)      | YES  | MUL | NULL    |                |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

新しく「Age」カラムが追加され、Key列にMULと表示されています。これは、そのカラムにインデックスが設定されていることを示しています。

SHOW INDEXでインデックスを確認する

最後に、SHOW INDEXコマンドを使って、テーブルに設定されたインデックスの詳細情報を確認してみましょう。

mysql> show index from AddColumnAndIndexDemo;

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

+-----------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| Table                 | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible |
+-----------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| addcolumnandindexdemo | 0          | PRIMARY  | 1            | Id          | A          | 0           | NULL     | NULL   |      | BTREE      |         |                | YES     |
| addcolumnandindexdemo | 1          | Age      | 1            | Age         | A          | 0           | NULL     | NULL   | YES  | BTREE      |         |                | YES     |
+-----------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
2 rows in set (0.16 sec)

この結果から、主キー「PRIMARY」に加えて、新しく作成した「Age」インデックスがBTREE型で登録されていることが確認できます。

まとめ

MySQLでカラム追加とインデックス作成を同時に行う場合は、ALTER TABLE文の中でADD COLUMNADD INDEXを組み合わせるのが便利です。変更後はDESCコマンドでKey列に「MUL」が表示されるかどうか、またSHOW INDEXコマンドでインデックスの詳細をチェックすると、確実に反映されているかを確認できます。

  1. 【MySQL】テーブルに新しい列を追加し、同じテーブルの他の2つの列から値を計算して入力する方法

    MySQLで新しい列を追加し、既存の2つの列から計算した値を入力する方法 この記事では、MySQLのテーブルに新しい列を追加し、同じテーブル内の他の2つの列のデータをもとに値を入力する方法を、実際の例を交えて解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成しましょう。 mysql> create table DemoTable ( Price int, Quantity int ); Query OK, 0 rows affected (0.71 sec) 2. レコードを挿入する INSERTコマンドを使用して、テーブルにいくつかのレコードを追加

  2. MySQLでインデックス付きのテーブルを作成する方法を徹底解説

    MySQLでは、テーブル作成後にCREATE INDEX文を使うことで、特定のカラムに対してインデックスを追加できます。検索速度の向上やデータ整合性の確保において、インデックスは非常に重要な役割を果たします。この記事では、基本的な構文から実際の実行例まで、順を追ってわかりやすく解説します。インデックス付きテーブルを作成する基本構文まずテーブルを作成し、その後CREATE INDEX文でインデックスを追加します。基本の構文は以下のとおりです。create table yourTableName ( yourColumnName1 dataType, yourColumnName2 dataTyp