CREATE TABLEでテーブル作成したので、メモとして残しておきます
自分が使ったSQL文
CREATE TABLE hoge_table (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
hoge_id int(10) unsigned NOT NULL,
hoge text,
created datetime DEFAULT NULL,
updated timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE (hoge_id, hoge)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 comment='ほげほげ';
文法
CREATE TABLE テーブル名 (
カラムの名前① データ型 オプション,
カラムの名前② データ型 オプション,
オプション
) データベースやコメント設定;
使った用語などの説明
unsigned
正の数のみ格納するようにするオプション。
intの場合、通常は-2147483648~2147483647までの数字を格納できるが、unsigned
することで、0~4294967295まで格納できるようになる。
NOT NULL
NULL が格納できなくなるオプション。
NULL を記述すると NULL を格納できるようになる。
指定しなかった場合、デフォルトでは NULL が格納できるようになる。
AUTO_INCREMENT
データを追加した時にカラムに対して現在格納されている最大の数値に 1 を追加した数値を自動で格納するオプション。
注意点は以下の通り。
- 整数または浮動小数点数のデータ型が設定されているカラムに対して設定できる。
- AUTO_INCREMENT はテーブルごとに 1 つのカラムにしか設定できない。
- AUTO_INCREMENT が設定されたカラムにはインデックスが設定されている必要がある。
(インデックスを自動的に作成する PRIMARY KEY や UNIQUE で設定してもOK) - AUTO_INCREMENT が設定されたカラムには DEFAULT 制約は設定できない。
- AUTO_INCREMENT が設定されたカラムに正の数値を格納した場合だけ正しく動作する。
DEFAULT
DEFAULT 制約をつけることができるオプション。
このオプションを設定したカラムに対して値を指定しなかった場合にデフォルトの値が格納される。
今回の場合は DEFAULT NULL としているので、デフォルトでは NULL が格納される。
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
デフォルト値が現在のタイムスタンプになり、現在のタイムスタンプに自動的に更新される。
このカラムは更新のタイムスタンプを格納するカラムなので、更新した際のタイムスタンプが更新されていることになる。
PRIMARY KEY
このオプションで指定したカラムは、重複する値は格納できなくなる。
NULL も格納することができない。
なので、PRIMARY KEY が設定されたカラムの値を検索することで、そのテーブル内で1つのデータを特定できる。
UNIQUE
指定したカラムが重複する値は格納できなくなる。
複数のカラムを指定していたら、指定したカラム全ての値が重複する値が格納できなくなるということ。
ENGINE
データベースを指定する。
デフォルトでは、InnoDBなので、今回の場合は必要なかった。
DEFAULT CHARSET
テーブル全体に文字コードを指定するオプション。
comment
コメントを設定できるオプション。
このテーブルがなんのテーブルなのかなどの、メモにもなる。
以下のサイトを参考にしました。