2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLでテーブル作成

Posted at

#MySQLにおけるテーブル作成

CREATE TABLE [データベース名.]テーブル名 (カラム1 型情報, カラム2 型情報, ...);

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

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

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

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

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

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

CREATE TABLE IF NOT EXISTS [データベース名.]テーブル名 (カラム1 型情報);
1

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

##nullを許可しない「NOT NULL」

CREATE TABLE [データベース名.]テーブル名 (
  カラム1 型情報 NOT NULL,
  カラム2 型情報);

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

CREATE TABLE [データベース名.]テーブル名 (
  カラム1 型情報 AUTO_INCREMENT,
  カラム2 型情報
);

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

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

CREATE TABLE [データベース名.]テーブル名 (
  カラム1 型情報 NOT NULL PRIMARY KEY,
  カラム2 型情報
);

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

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

CREATE TABLE [データベース名.]テーブル名 (
  カラム1 型情報 UNIQUE,
  カラム2 型情報
);

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

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

CREATE TABLE [データベース名.]テーブル名 (
  カラム1 型情報 DEFAULT デフォルト値,
  カラム2 型情報);

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

CREATE TABLE [データベース名.]テーブル名 (
  カラム1 型情報,
  カラム2 型情報,
  カラム3 型情報,
  INDEX(カラム1, カラム2 ...)
);

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

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

CREATE TABLE IF NOT EXISTS user (
  ID    int(11) unsigned AUTO_INCREMENT NOT NULL,
  score int(11) default '0',
  name  text NOT NULL,
  PRIMARY KEY (ID)
);

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

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

##最後に
以上MySQLでテーブル作成をする方法を紹介しました:open_hands:

2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?