CREATE TABLE 構文

メモ:  Category:mysql

データベースに表を作成します。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 表名 [(列名 型名 制約,...)]
       [table_options] [select_statement]

TEMPORARY を指定すると接続中のみその接続ごとで使用可能なテーブルが作成されます。 この一時表は、接続が終了すると自動的に消去されます。

IF NOT EXISTS は、すでにテーブルが作成されていた場合エラーを表示しません。 ただし、表名のみの判断のようです。

表名は、最大64バイトでファイル名として許されるすべての文字。/ と . を除きます。

列名は、最大64バイトで全ての文字が使用可能です。

フィールドに使用できる型

数値型

TINYINT [(M)] [UNSIGNED] [ZEROFILL] 範囲:-128~127,符号なし範囲:0~255
SMALLINT [(M)] [UNSIGNED] [ZEROFILL] 範囲:-32768~32767,符号なし範囲:0~65535
MEDIUMINT [(M)] [UNSIGNED] [ZEROFILL] 範囲:-8388608~8388607,符号なし範囲:0~16777215
INTEGER または INT [(M)] [UNSIGNED] [ZEROFILL] 範囲:-2147483648~2147483647,符号なし範囲:0~4294967295
BIGINT [(M)] [UNSIGNED] [ZEROFILL] 範囲:-9223372036854775808~9223372036854775807,符号なし範囲:0~18446744073709551615
FLOAT (精度) [ZEROFILL] 8桁以内の浮動小数。
FLOAT [(M,D)] [ZEROFILL] 4バイト浮動少数。
範囲: -3.402823466E+38~-1.175494351E-38、0、1.175494351E-38~3.402823466E+38
DOUBLE または REAL [(M,D)] [ZEROFILL] 8バイト浮動少数。
範囲:-1.7976931348623157E+308~-2.2250738585072014E-308、0、2.2250738585072014E-308~1.7976931348623157E+308
DECIMAL または NUMERIC (M,D) [ZEROFILL] パック無し浮動小数。

日付型

DATE 日付。
書式:YYYY-MM-DD
DATETIME 日時。
書式:YYYY-MM-DD HH:MM:DD
TIMESTAMP [(M)] 自動更新される日時。
書式:YYYY-MM-DD HH:MM:DD
TIME 時刻。
書式:HH:MM:DD
YEAR 2桁または4桁形式(デフォルト)の年。
書式:YYYY

文字列型

種別
固定長 [NATIONAL] CHAR (M) [BINARY] 固定長文字列(幅:1~255文字)
/5. 可変長 [NATIONAL] VARCHAR (M) [BINARY] 可変長文字列(幅:1~255文字)
TINYTEXT 最大長 255 バイトのテキスト
TEXT 最大長 65535 バイトのテキスト
MEDIUMTEXT 最大長 16777215 バイトのテキスト
LONGTEXT 最大長 4294967295 バイトのテキスト

バイナリ型,その他

BYNARY(M) 最大長 255 バイトの固定長バイナリオブジェクト
VARBINARY(M) 最大長 255 バイトの可変長バイナリオブジェクト
TINYBLOB 最大長 255 バイトのバイナリオブジェクト
BLOB 最大長 65535 バイトのバイナリオブジェクト
MEDIUMBLOB 最大長 16777215 バイトのバイナリオブジェクト
LONGBLOB 最大長 4294967295 バイトのバイナリオブジェクト
ENUM (‘value1’,‘value2’,…) char データ型のリスト。
最大65535個の値を持つことができます。
SET (‘value1’,‘value2’,…) 組。
最大 64個の要素を持つことができます。

列制約と表制約

1.列制約構文

CREATE TABLE 表名(列名 データ型 制約 制約 ...,...);

[NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY] [参照定義]

2.表制約構文

CREATE TABLE 表名(列名 データ型,...
    ,制約名(列名,列名,...));

    PRIMARY KEY (index_col_name,...)
    KEY [index_name] (index_col_name,...)
    INDEX [index_name] (index_col_name,...)
    UNIQUE [INDEX] [index_name] (index_col_name,...)
    FULLTEXT [INDEX] [index_name] (index_col_name,...)
    [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...) [参照定義]
    CHECK (expr)

KEYとINDEXは同じです。

bluenote by BBB