テーブル
作成
CREATE TABLE <テーブル名>
( <列名1> <データ型> <制約>,
...);
削除
DROP TABLE <テーブル名>;
変更
-- 列の追加
ALTER TABLE <テーブル名> ADD COLUMN <列の定義>;
-- 列の削除
ALTER TABLE <テーブル名> DROP COLUMN <列の定義>;
集合演算(行方向)
これらは、以下のように使われる。
SELECT <列1>, <列2>
FROM <テーブル名>
UNION -- このようにレコードの集合に対して処理する
SELECT <列a>, <列b>
FROM <テーブル名>
UNION
和(⋃)。重複行は削除される。 UNION ALL では削除されない。
INTERSECT
共通(積)(⋂)。どちらにも属する行。
EXCEPT
差(-)。A EXCEPT B は AにあってBにない行。
集合演算(列方向)
INNER JOIN
内部結合。FROM <テーブル名> INNER JOIN <テーブル名> ON <結合条件>
OUTER JOIN
外部結合。FROM <テーブル名> LEFT OUTER JOIN <テーブル名> ON <結合条件>。
外部結合では左右どちらのテーブルをマスタとみなすかによって、 LEFT OUTER JOIN, RIGHT OUTHER JOIN を使いわける。
データ
登録
INSERT … VALUES: 基本形。1回で1行を挿入。
INSERT INTO <テーブル名> ( <列名1>, <列名2>, ...)
VALUES ( <値1>, <値2>, ...);
INSERT … SELECT: ほかのテーブルからデータをコピーする場合
INSERT INTO <テーブル名> ( <列名1>, <列名2>, ...)
SELECT <列目a>, <列名b>, ...
FROM <テーブル名>;
更新
UPDATE
UPDATE <テーブル名>
SET <列名> = <式>
WHERE <条件式>;
検索
-- 重複を省く = DISTINCT
SELECT DISTINCT <列名>, ...
FROM <テーブル名>
演算
-- 算術
-- +, -, *, /
SELECT <列名> * 5
FROM <テーブル名>
-- 比較
-- = : 等しい
-- <> : 等しくない
-- >= : 以上, <= : 以下
-- 論理
-- 否定は NOT, かつの AND, またはの OR
集約
集約関数
COUNT : 行数をカウントする
SUM : 合計
AVG : 平均
MAX : 最大値
MIN : 最小値
GROUP BY
SELECT <列名1>, <列名2>, <列名3>, ...
FROM <テーブル名>
GROUP BY <列名1>, <列名2>, <列名3>, ...
WHERE を利用する場合、WHEREの絞り込み後にグループ化される。
GROUP BY を利用する場合、SELECT句に書けるのは「定数」か「集約関数(SUMなど)」か「GROUP BYで指定した列」のみ。
処理順序
SELECT <列名a>, COUNT(*)
FROM <テーブル名>
GROUP BY <列名a>
HAVING COUNT(*) = 2;
句の順序: SELECT ⇒ FROM ⇒ WHERE ⇒ GROUP BY ⇒ HAVING ⇒ ORDER BY ⇒ LIMIT
実行順序: FROM ⇒ WHERE ⇒ GROUP BY ⇒ HAVING ⇒ SELECT ⇒ ORDER BY ⇒ LIMIT
① GROP BY 句を使うときは SELECT 句に集約キー以外の列名を書けない
② SELECT 句に AS で別名付けた名前を GROUP BY では利用できない。なぜなら、実行順は SELECT が最後だから。
③ WHERE は GROUP BY より先に処理されるため、集約を使う場合は HAVING。