なんとな~くしあわせ?の日記

ClojureとかAWSの設定とかをメモする技術ブログ

SQLもプログラミング言語…っぽい2



最近実地で学んだことを書き留めておく

データのINSERT

単純にデータをINSERTする場合

INSERT INTO HOGE_TABLE(A, B, C) VALUES ('FOO', 'BAR', 'BAZ');

他のテーブルからSELECTした内容をINSERTする場合

INSERT INTO HOGE_TABLE (FOO, BAR, BAZ)
SELECT A AS FOO, B AS BAR, C AS BAZ         -- ←順番さえ守れば名前はなんでも良い
FROM HUGA_TABLE;
表の結合

よくある表の結合方法としてINNER JOIN, LEFT JOIN, RIGHT JOINが挙げられるが、実際それはキッチリと結合したいときに使うものであり、以下のように楽することもできる。

-- 表 HOGEと表HUGAは同じ主キーのKEYを持つものとする
SELECT
  *
FROM
  HOGE, HUGA
WHERE
  HOGE.KEY = HUGA.KEY

以前書いたとおり、FROM句のあとにSELECT文で表を作れるのでそれらと連携するとネストした表を結合しまくって目当てのブツを手に入れられる
(…だんだん「ハック」な感じになってきましたね)。

括弧で囲んだ表には別名をつけると良い

SELECT
  *
FROM
(
  SELECT
    *
  FROM
    HOGE
) THIS_TABLE, -- HOGEテーブルで捕まえた内容をTHIS_TABLEとする
(
  SELECT
    *
  FROM
    HUGA
) THAT_TABLE
WHERE
  THIS_TABLE.KEY = THAT_TABLE.KEY -- 結合とかしちゃう

この本が実用的で面白かったです。

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)

書籍の内容としては「1−5 外部結合の使い方」、に近いかなあと思います。