テーブル名,カラム名

マイルール
1) 予約語に気をつける。
2) 大文字を使わない。
3) 複数単語の連結表記にはスネークケース( snake_case )を使う。


CREATE

CREATE TABLE table_name ( id int UNSIGNED AUTO_INCREMENT, number int(5) ZEROFILL, name varchar(191) NOT NULL DEFAULT 'No Name', mail varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, birthday date DEFAULT NULL, PRIMARY KEY (id, number) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

int:-2147483648~2147483647までの数字を格納できる。
UNSIGNED:正の数のみ設定できるようにする。0~4294967295まで格納できるようになる。

ストレージ 最小値 最大値
(バイト) (符号付き/符号なし) (符号付き/符号なし)
TINYINT 1 -128 127
0 255
SMALLINT 2 -32768 32767
0 65535
MEDIUMINT 3 -8388608 8388607
0 16777215
INT 4 -2147483648 2147483647
0 4294967295
BIGINT 8 -9223372036854775808 9223372036854775807
0 18446744073709551615

AUTO_INCREMENT:レコードが追加されたとき、自動的に付与される(インクリメントされる)

int(5)のカッコ内の数値:ZEROFILLを指定した時の 0 で補完する表示桁数を定義する。
ZEROFILL:整数の型に ZEROFILL を指定すると、表示桁数に満たない値を 0 で埋めることができる。自動的に UNSIGNED が付加される。

varchar(文字数)
DEFAULT:デフォルトの値を設定する。

date:yyyy-mm-dd
datetime:yyyy-mm-dd hh:mm:ss

NOT NULL を記述すると該当のカラムには NULL を格納できなくなります。デフォルトでは NULL が格納できます。

PRIMARY KEY:重複した値を登録することができなくなる(UNIQUE制約)。また、NULLを登録することもできなくなる(NOT NULL制約)。


INSERT

INSERT INTO table_name (number, name, mail, birthday) VALUES (440, 'Yuu', 'yuu@example.net', '2001-05-06');

SELECT

すべてのカラムの値を取得する

SELECT * FROM table_name;

10件読み飛ばして30件表示する(11~40番を表示)は、「LIMIT 10, 30」となる。

SELECT * FROM table_name LIMIT 10, 30;

読み飛ばしが0の場合は省略できる。
3件表示する。

SELECT * FROM table_name LIMIT 3;

「ORDER BY {カラム名}」を指定することで任意の列でソートすることができる。
ORDER BYでカラム指定した後に「DESC」を指定すると「降順」になる
ORDER BYのデフォルトは「昇順」。意図的に昇順と指定する場合は「ASC」を指定する。

SELECT * FROM table_name ORDER BY number DESC;

ソートの対象として 2 つのカラムを指定する場合。
最初に name カラムの値でソートを行い、 name カラムの値が同じデータに関して number カラムの値でソートを行う。カラム毎に昇順か降順かは指定できる。

SELECT * FROM table_name ORDER BY name DESC, number ASC;

ランダムにレコードを取得する場合。

SELECT * FROM table_name ORDER BY RAND ();

SELECT文に続いて「WHERE 条件式」というように条件指定をして検索する。

SELECT * FROM table_name WHERE name = 'No Name';

複数の条件式を指定する際は、論理演算子の「AND」や「OR」で接続する。

ワイルドカードを使って文字列を検索する。
アンダスコア記号(_)→任意の1文字にマッチする。
パーセント記号(%)→0個以上のの連続した文字にマッチする。

SELECT * FROM table_name WHERE birthday LIKE '199%';

カラムの値が指定した値のリストの中に一致したものを抽出。

SELECT * FROM table_name WHERE id IN(8, 38, 43);

IN のリストの順番でソートする。

SELECT * FROM table_name WHERE id IN(7, 5, 3) ORDER BY FIELD(id, 7, 5, 3);

検索欄が空欄のとき、全検索にする。

SELECT * FROM table_name WHERE CASE WHEN 検索値 = '' THEN TRUE ELSE 検索対象列 = 検索値 END;

同一単語を複数カラム(colA, colB)にわたって検索する。

SELECT * FROM table_name WHERE CONCAT(IFNULL(colA,''), IFNULL(colB,'')) = 検索値;

UPDATE

指定したカラムの値を更新する。 WHERE 句を指定しなければテーブルに格納されているすべてのデータが更新される。特定のデータのカラムの値だけを更新したい場合は WHERE 句で指定する。

UPDATE table_name SET mail = 'yuu@example.com' WHERE name = 'Yuu';

UPDATE table_name SET name = 'John' WHERE id IN (1, 3, 5);

デフォルト値にする。カラム名を引数で指定する。指定のカラムにデフォルト値が設定されていない場合はエラーとなる。

UPDATE table_name SET name = DEFAULT(name) WHERE number = 00051;

カラムの値を1増やす。

UPDATE table_name SET colA = colA + 1 WHERE id = 123;

DELETE

データを削除する。 WHERE 句を指定しなければテーブルに格納されているすべてのデータが削除される。特定のデータを削除したい場合は WHERE 句で指定する。

DELETE FROM table_name WHERE id = 5;

- guitar site WAVE -