CREATE DATABASE database_name;
DROP DATABASE database_name;
CREATE TABLE table_name (col_name type, ...);
CREATE TABLE table_name (col_name type, ..., PRIMARY KEY (col_name));
CREATE TABLE table_name (
col_name type, ...,
FOREIGN KEY (col_name) REFERENCES parent_table_name(col_name)
);
CREATE TABLE table_name (
col_name type, ...,
FOREIGN KEY (col_name) REFERENCES parent_table_name(col_name)
ON DELETE [ アクション ]
ON UPDATE [ アクション ]
);
設定できるアクション。
アクション | 詳細 |
---|---|
RESTRICT | 親テーブルに対して UPDATE / DELETE を行うとエラーになる ( デフォルト ) |
CASCADE | 親テーブルに対して UPDATE / DELETE を行うと、子テーブルの一致する行に自動的に UPDATE / DELETE を行う |
SET NULL | 親テーブルに対して UPDATE / DELETE を行うと、子テーブルの外部キーを NULL に設定する |
SELECT col_name1, col_name2, ... FROM table_name [ 条件 ];
演算子 | 意味 |
---|---|
"=" | 等しい |
"<" | 小さい |
">" | 大きい |
"<=" | 以下 |
">=" | 以上 |
"<>" | 等しくない |
SELECT * FROM table_name WHERE BETWEEN value1 AND value2;
指定した範囲に値があるものを取得。
SELECT * FROM table_name WHERE col_name IN ('value1', 'value2');
指定した値のリストの中にあるものを取得。
SELECT * FROM table_name WHERE col_name LIKE '_100%';
%
は任意の文字数の任意の文字、 _
は 1 文字の任意の文字。
SELECT * FROM table_name
WHERE col_name1 = (
SELECT * FROM table_name WHERE col_name2 = value
);
副問合せ。
SELECT DISTINCT col_name1, col_name2, ... FROM table_name;
SELECT の結果から重複業を除外できる。
GROUP BY
でも重複削除できる。
SELECT col_name1, col_name2, ... FROM table_name GROUP BY col_name1;
SELECT * FROM table_name ORDER BY col_name1 ASC, col_name2 DESC;
ASC は昇順。 DESC は降順。 ASC は省略可能。
SELECT * FROM table_name ORDER BY col_name LIMIT 5;
SELECT col_name, MAX(col_name) FROM table_name;
基本的に NULL は無視される。 集約関数の種類。
関数 | 意味 |
---|---|
MAX | 最大値 |
MIN | 最小値 |
SUM | 合計 |
AVG | 平均 |
COUNT | カウント |
SUM / AVG / COUNT は DISTINCT をサポートしている。
SELECT col_name, COUNT( DISTINCT col_name ) FROM table_name;
SELECT col_name, COUNT(col_name) FROM table_name GROUP BY col_name;
テーブルを集約キーでグループ分けしてから集計する。
SELECT COUNT(col_name1) FROM table_name GROUP BY col_name1 HAVING COUNT(col_name1) >= value;
GROUP BY
されたグループに対して条件を指定できる。
この場合、列名 1 で集計した値をカウントしてから HAVING で指定した条件のもののみを取得する。
結合の種類は 3 つ。
SELECT *
FROM table_name1 CROSS JOIN table_name2;
すべてのテーブルの組み合わせを作る。
SELECT table_name1.*, table_name2.col_name, ...
FROM table_name1 INNER JOIN table_name2
ON table_name1.col_name1 = table_name2.col_name1;
クロス結合の部分集合。条件一致したものだけを取得する。
USING
でも書ける。
SELECT table_name1.*, table_name2.col_name, ...
FROM table_name1 INNER JOIN table_name2 USING(col_name);
SELECT table_name1.*, table_name2.col_name, ...
FROM table_name1 ( LEFT | RIGHT ) OUTER JOIN table_name2
ON table_name1.col_name1 = table_name2.col_name1;
内部結合と同様に条件一致したものを取得し、さらに、マッチしなかった ( LEFT | RIGHT ) のテーブルの行は残す。
書式 | 内容 |
---|---|
LEFT OUTER JOIN | FROM のあとに書かれたテーブルのデータだけを取得 |
RIGHT OUTER JOIN | JOIN の後に書かれたテーブルのデータだけを取得 |
DROP TABLE table_name;
INSERT INTO database_name.table_name(col_name1, col_name2, ...) VALUES (value1, value2, ...);
全てのカラムに値を追加する場合は以下のように書ける。
INSERT INTO table_name VALUES(value1, value2, ...);
データを持たず実行分だけが入っている。
CREATE VIEW view_name (col_name1, col_name2, ...) AS select_statement;
SELECT col_name FROM as unsigned FROM table_name;
ALTER TABLE table_name AND INDEX index_name (col_name);
BEGIN
で開始して, COMMIT
で反映, ROLLBACK
で取り消しができる。
BEGIN;
SQL1;
SQL2;
COMMIT;