いがにんのぼやき

若手WEBエンジニアのブログ。IT、WEB、バンド、アニメ。

ゼロから始めるデータベース操作を読み始めた02

北海道に旅行に行っていたので、間が空いてしまった。
また学習しての気付きなどを書いていく。

各句の記述順序

  1. SELECT
  2. FROM
  3. WHRE
  4. GROUP BY
  5. HAVING
  6. ORDER BY

大雑把な実行順序

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

GROUP BY句では別名は使えない
SELECTやGROUP BYの結果の行の並び順はランダム

どちらにもかける条件は下記の方針で行うと分かりやすい

  • WHERE句=行に対する条件指定
  • HAVING句=グループに対する条件指定

ORDER BYを使用した時、NULLは先頭か末尾にまとめられる。
DBMSによってどちらにするか指定する昨日もある

INSERTで明示的にデフォルト値を挿入するにはDEFAULT

SELECTした結果をそのままテーブルにINSERTすることができる

INSERT INTO AlphaCopy (a, b, c)
    SELECT a, b, c FROM Alpha;

テーブル内行全削除(TRUNCATEのほうが基本は早い)

DELETE FROM テーブル名;
TRUNCATE テーブル名;

ビューは内部的にそのSELECT文を実行し仮想的なテーブルに見せるもの
サブクエリは更に使い捨てのビュー
サブクエリには原則的に名前をつける

必ず1行1列だけの戻り地を返す、スカラ・サブクエリ WHERE句での比較に使える

相関サブクエリ

SELECT a, b, c
    FROM Alpha AS A1
    WHERE a > (SELECT AVG(a)
                FROM Alpha AS A2
                WHERE A1.b = A2.b
                GROUP BY b);

文字列連結は||またはCONCAT関数
NULLを値へ変換する関数COALESCE

LIKEでのパターンマッチで使用できる文字列

  • % 0文字以上の文字列
  • _ 任意の1文字

IN句はテーブルを引数に取ることができる

続く

完全に忘れてんなーってのと知らんかったなーってのと。
ここまででひとつのテーブルに対してってのが多かったけど次からは結合関係になるのかな