デスペ学習
20230708
情報処理教科書を読み始める
序章に目を通して1章:SQLに突入
日頃から使っており比較的得意と思われる
・COALESCEは頻出らしいが使ったことがなかった
・ウィンドウ関数もpandasなど後続で処理していたので書き方を覚える。フレームの書き方など
・外部全結合はFULL JOIN。OUTER JOINと思い込んでいた
・三値論理。不定(unknown)の取り扱いに注意
・集約関数の結果を絞るHAVING句
20230709
ON句内での条件指定:内部結合と外部結合で挙動が異なる
外部結合では指定した条件以外の行も残るので、WHERE句でも絞る必要がある。
これは、ON句の条件が結合前のレコードを絞る一方で、外部結合の結果は結合しなかった行も残すためっぽい
そもそもON句で条件を絞るという考えがなかったが、令和3年午前Ⅱ問8で問われている
20230710
和差直積積商
集合の論理、ALLがないとDISTINCTがかかる。元の集合内の重複も消えることに注意
等結合は直積+選択
積は和と差で表現可能
副問合せと相関副問合せ
挙動の違いに注意。EXISTSを使った存在確認は相関副問合せの典型だが、これを副問合せにすると全く動きが違う
INによる副問合せとEXISTSによる相関副問合せは書き方によって同じ効果となるが、EXISTSのほうが速いらしい。調べると必ずしもそうではないようなのだが…
INは各行を副問合せ結果に対して全検索するのでO(NM)だが、EXISTSはインデックスを貼っていればO(N+M)らしい(なぜ?)