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

MySQLのCREATEステートメントにおけるKEYキーワードの使い方を解説

KEYキーワードとINDEXの関係

MySQLの公式ドキュメントには、以下のように記載されています。

KEYは通常、INDEXの同義語です。PRIMARY KEY属性は、カラム定義の中で単に「KEY」と記述することも可能です。これは他のデータベースシステムとの互換性を保つために実装されています。

つまり、MySQLでは KEYINDEX はほぼ同じ意味で使うことができ、状況に応じて使い分けが可能です。以下、実際のコード例を見ていきましょう。

サンプルテーブルの作成

まず、テスト用のテーブルを作成します。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 という明示的なキーワードを使うことが推奨されます。インデックスを適切に活用することで、検索クエリのパフォーマンスを大幅に向上させることができます。

  1. MySQLでMyISAMエンジンのテーブルを作成・確認する方法

    MySQLでMyISAMエンジンを使用したテーブルを作成するには、CREATE TABLE文にENGINEオプションを指定します。この記事では、テーブルの作成から、実際にMyISAMエンジンで作成されているかの確認方法まで、具体的なコマンド例とともに順を追って解説します。 MyISAMエンジンのテーブルを作成する CREATE TABLE文の末尾にENGINE=MyISAMを記述することで、MyISAMエンジンを使用したテーブルを作成できます。 mysql> create table StudentRecordWithMyISAM -> ( -> Id int

  2. MySQL Workbenchで新しいデータベースを作成する方法

    MySQL Workbenchを使って新しいデータベースを作成するには、まずMySQL Workbenchを起動する必要があります。以下は起動画面のスクリーンショットです。MySQLへの接続を確認する次に、MySQLとの接続をテストしてみましょう。以下の手順に従ってください。Database -> Connect to Database(Ctrl + U)すると、「Connect to Database(データベースに接続)」ダイアログボックスが表示されます。続行するにはパスワードを入力してください。その後、OKボタンを2回押すと接続が確立されます。データベースの作成手順接続が完了したら