SQL構文(テーブル操作)

テーブルの作成や削除といった操作。
これを「データ定義言語(Data Definition Language)」として分類する。

データベースの文字コード設定

最初にこれをやっておかないと、
デフォルトでは、スウェーデン語になっていると思われる。
この状態でテーブル作成すると、おそらく日本語を入力した際に、
「???」に文字化けする事があり、
カラム単位で修正する必要があったりと、後々修正が大変である。

なので、以下SQL文を打ち込み、
データベースそのものの文字コードを、UTF-8にしておこう。

例:データベース名が「sql_test」の場合

ALTER DATABASE sql_test
CHARACTER SET utf8
COLLATE utf8_unicode_ci;

MySQL5.5以降なら、絵文字も使えるutf8mb4も使える。

ALTER DATABASE sql_test 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_general_ci;

テーブル作成

テーブル作成には、「CREATE TABLE」文を用いる。

例:「sql_test」のデータベース上に、「goods」テーブルを作成する。

CREATE TABLE sql_test.goods (
    id int AUTO_INCREMENT UNIQUE,
    name varchar(20), price int, PRIMARY KEY(id)
);

ちなみに「PRIMARY KEY(id)」主キーを設定する部分。
主キーがないテーブルは不便だよ。

また、上記SQL文において、主キーに設定する「id」カラムには、
同時に自動インクリメント(AUTO_INCREMENT)と、
ユニークキー(UNIQUE)の設定も行っている。
単純に主キーを設定するだけでは、この2つの制約は自動で設定されない。
おそらくは、複合主キーを作る際を考慮してのものと思われる。

データ型

とりあえず覚えておけばいいもの

数値
INT(11) 基本的な数値。丸カッコはケタ数。
ただし、小数点数を入れると四捨五入されるので、
整数のみを保存したい場合に。
FLOAT 浮動小数点数。DOUBLEも浮動小数点数だが、
FLOATで充分事足りるはず。
文字列
VARCHAR(20) 文字数制限を行ったテキスト。
長ーいデータを、入れられたくないときに。
丸カッコ内は文字数で、全角も1文字として判定される。
TEXT その名の通りテキスト。
容量や文字数を気にせず入力したいときに。
しかし、アプリ側で文字数制限を行うなりしておこう。
時間
DATETIME 日付と時刻。
西暦・月・日・時・分・秒を、
時間の形式として保存してくれる。
アプリ側のdate系関数で一発変換できるので便利!
DATE 日付のみを保存。時間単位の情報が必要ないというときに。
TIME 時刻を保存。1日の時間の範囲を算出したいときなどに。