MySQLのCREATEステートメントにおけるKEYキーワードの使い方を解説
KEYキーワードとINDEXの関係
MySQLの公式ドキュメントには、以下のように記載されています。
KEYは通常、INDEXの同義語です。PRIMARY KEY属性は、カラム定義の中で単に「KEY」と記述することも可能です。これは他のデータベースシステムとの互換性を保つために実装されています。
つまり、MySQLでは KEY と INDEX はほぼ同じ意味で使うことができ、状況に応じて使い分けが可能です。以下、実際のコード例を見ていきましょう。
サンプルテーブルの作成
まず、テスト用のテーブルを作成します。Id カラムには PRIMARY KEY を設定し、自動採番(AUTO_INCREMENT)を有効にしています。
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(50),
Age int
);
Query OK, 0 rows affected (0.69 sec)
インデックス(INDEX)の作成
次に、KEY の同義語である INDEX を使ってインデックスを作成します。ここでは Name と Age の2カラムを対象とした複合インデックスを作成しています。
mysql> create index Name_Age_Index on DemoTable(Name,Age); Query OK, 0 rows affected (0.65 sec) Records: 0 Duplicates: 0 Warnings: 0
テーブル構造の確認
DESC コマンドでテーブルの構造を確認してみましょう。
mysql> desc DemoTable;
実行すると、次のような出力が得られます。Name カラムの Key 列に「MUL」が表示されているのが分かります。これは複合インデックスの一部であることを示しています。
+-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | Id | int(11) | NO | PRI | NULL | auto_increment | | Name | varchar(50) | YES | MUL | NULL | | | Age | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ 3 rows in set (0.01 sec)
Key列の表示値について
- PRI:主キー(PRIMARY KEY)として設定されていることを示します。
- MUL:複合インデックスの先頭カラム、または重複を許可するインデックスであることを示します。
- UNI:一意(ユニーク)なインデックスであることを示します。
レコードの挿入
INSERT コマンドを使って、テーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable(Name,Age) values('Robert',21);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Name,Age) values('Bob',23);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Name,Age) values('David',22);
Query OK, 1 row affected (0.39 sec)
レコードの表示
SELECT 文を使って、テーブル内のすべてのレコードを表示して確認しましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+----+--------+------+ | Id | Name | Age | +----+--------+------+ | 2 | Bob | 23 | | 3 | David | 22 | | 1 | Robert | 21 | +----+--------+------+ 3 rows in set (0.00 sec)
まとめ
MySQLにおいて KEY は基本的に INDEX の同義語であり、カラム定義内では PRIMARY KEY を省略形の KEY として記述できる柔軟性があります。ただし、可読性や他の開発者への意図の伝達を考えると、PRIMARY KEY や INDEX という明示的なキーワードを使うことが推奨されます。インデックスを適切に活用することで、検索クエリのパフォーマンスを大幅に向上させることができます。
-
MySQLでMyISAMエンジンのテーブルを作成・確認する方法
MySQLでMyISAMエンジンを使用したテーブルを作成するには、CREATE TABLE文にENGINEオプションを指定します。この記事では、テーブルの作成から、実際にMyISAMエンジンで作成されているかの確認方法まで、具体的なコマンド例とともに順を追って解説します。 MyISAMエンジンのテーブルを作成する CREATE TABLE文の末尾にENGINE=MyISAMを記述することで、MyISAMエンジンを使用したテーブルを作成できます。 mysql> create table StudentRecordWithMyISAM -> ( -> Id int
-
MySQL Workbenchで新しいデータベースを作成する方法
MySQL Workbenchを使って新しいデータベースを作成するには、まずMySQL Workbenchを起動する必要があります。以下は起動画面のスクリーンショットです。MySQLへの接続を確認する次に、MySQLとの接続をテストしてみましょう。以下の手順に従ってください。Database -> Connect to Database(Ctrl + U)すると、「Connect to Database(データベースに接続)」ダイアログボックスが表示されます。続行するにはパスワードを入力してください。その後、OKボタンを2回押すと接続が確立されます。データベースの作成手順接続が完了したら