MySQLでテーブル作成をする「CREATE TABLE」

MySQLでテーブル作成をする方法を紹介します。

MySQLにおけるテーブル作成の基本形

指定データベースに新規テーブルを作成します。「USE」文などで使用するデータベースを指定している場合は、データベース名を省略できます。

テーブル名の文字数・記号

テーブル名には、クォーテーションなしでテーブル名に使える文字は、英数字、アンダーバー「_」、ドル記号「$」です。ハイフン「-」などその他の記号は、クォーテーションなしで使えないので避けたほうが良いです。さらに、テーブル名は64バイト以内となっています。

MySQLにおける予約語

また、MySQLにはCHANGE、EXPLAIN、INDEXなどの予約語があり、予約語をテーブル名に使うのは可能であれば避けたほうが良いでしょう。

テーブル名を予約語にした場合は、テーブル名をクォーテーションで囲む必要があります。

参照:MySQLの予約語と識別子:文字数制限、記号

MySQLのテーブル作成時につかえるオプション

テーブル作成時に、オプションを加えることでより詳細な設定をすることができます。今回は、よく使うオプションを紹介します。

テーブルが存在しなければ作成「IF NOT EXISTS」

テーブル作成時に、同名のテーブルがなければ作成し、テーブルが既に存在する場合はなにもしません。PHPなどのプログラムからデータベースを作成する際などによく使われます。

nullを許可しない「NOT NULL」

カラムにnullを保存することを許可しません。デフォルトでは、nullを許可する設定となっています。

カラムを連番に設定する「auto_increment」

AUTO_INCREMENTが設定されたカラムは、新しい行が追加される毎に1ずつ自動加算される連番のカラムとなります。

参照:MySQLでカラムを連番にする「AUTO_INCREMENT」

プライマリーキーを設定する「PRIMARY KEY」

カラムの値を重複不可とする場合は、プライマリーキー(主キー)を設定します。この時、同時にNOT NULLも設定する必要があります。さらに、プライマリーキーの設定をすると、そのカラムに対してPRIMARYという名前のインデックスが作成されます。

参照:MySQLで主キー制約を設定する「PRIMARY KEY」

ユニークキーを設定する「UNIQUE」

ユニークキーは、カラムの値を重複不可とするという点ではプライマリーキーと同じです。ただし、ユニークキーはnullを保存でき、なおかつnullの値だけは重複可となっています。

カラムのデフォルト値を設定する「DEFAULT」

カラムへのデータ挿入時に、値が指定されなかった場合にデフォルトで設定される値を指定します。

カラムにインデックスを設定する

指定したカラムに対してインデックスを作成します。また、インデックスは「CREATE INDEX」でも作成できます。

ユーザーテーブルを作成する例

以上のことを踏まえて、userテーブルを作成するクエリの例を紹介します。

このクエリは以下のようなテーブルを作成します。

・ID、score, nameの3つのカラム
・IDにAUTO_INCREMENTとプライマリーキーを設定
・scoreにデフォルト値0を設定
・nameはnull不可

インデックスや、プライマリーキー、auto_incrementの詳細に関しては、各項目の説明ページを参照してください。

関連:MySQLでカラムを連番にする「AUTO_INCREMENT」
関連:MySQLで主キー制約を設定する「PRIMARY KEY」
関連:MySQLの予約語と識別子:文字数制限、記号


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて