SQLでよく使う慣用句的なものを集めてみる。 SELECT文重複をまとめて表示する(1)DISTINCTオプションを使用すると、同じレコードをまとめて表示できる。 SELECT DISTINCT col1, col2 FROM tbl
重複をまとめて表示する(2)GROUP BY句を用いる方法。重複を認める項目を細かく指定できる利点がある。また、COUNT関数を使うなどして何件の重複があるかを調べたりすることも出来る。 SELECT col1, col2 FROM tbl GROUP BY col1, col2
UPDATE文全レコード更新SELECT文の結果をUPDATE- テーブル2からテーブル1への更新を行う場合は次のようにする。
- IDで紐付け、テーブル2に存在しないレコードは対象外。
UPDATE テーブル1 as A SET (A.カラム1, A.カラム2, ...)
= (SELECT B.カラム1, B,カラム2, ... FROM テーブル2 as B WHERE A.ID = B.ID)
WHERE EXISTS (SELECT * FROM テーブル2 WHERE A.ID = B.ID)
- SQL Serverの場合はFROM句を使って次のように記述する。
UPDATE テーブル1
SET カラム1 = B.カラム1, カラム2 = B.カラム2, ...
FROM テーブル2 as B
WHERE テーブル1.ID = B.ID
INSERT文- データを新規追加する。
- 値を指定しない項目はNULL値が設定される。
INSERT INTO テーブル名 (項目名1, 項目名2, ...) VALUES (データ1, データ2, ...)
INSERT INTO テーブル名 VALUES (データ1, データ2, ...)
SELECT文の結果をINSERTDELETE文TRUNCATE文- テーブルの全レコードを対象に削除を行う。
- WHERE句を指定しないDELETE文と、ほぼ同様の結果が得られる。
- DELETE文より高速。(DELETE文は1行ずつ削除するため、トランザクションログも1行ずつ作成する、全行ロックも行われる)
TRUNCATE テーブル名
CASE文- 条件によりスカラ値を返す。
- 簡易的な条件分岐を埋め込めるので便利。
ある値との一致による振り分けCASE sex WHEN 'M' THEN '男' WHEN 'F' THEN '女' ELSE '他' END
条件式による振り分け CASE WHEN age < 20 THEN '未成年'
WHEN age < 100 THEN '成人'
ELSE '100歳以上'
END
EXISTS関数応用編空き番号を探す |
|