SQLメモ

テーブル

作成

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。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です