📑

学習備忘録〜O'Reilly「初めてのSQL」11章  条件付きロジック〜

2024/01/02に公開

はじめに

この備忘録は、新卒1年目の初学者バックエンドエンジニアの学習記録のためにつけているものです。
解釈違いや、誤情報がある可能性があります。見つけた際にはご指摘をお願いします。

条件付きロジックとは何か

条件付きロジックとは、プログラムの実行中に複数のパスの1つを選択できる能力のこと。

case式

ほとんどのプログラミング言語にはif-then-slese文が含まれているが、主要なデータベースサーバには例外なく、この文を模倣することを目的とした組み込み関数が含まれている。
case文もif-then-elseロジックを可能にすることを目的としているが、組み込み関数にはない利点が2点ある。

  • case式はSQL規格の一部であり、Oracle DBや、SQL Server、MySQL等で実装されている
  • case式はSQLの構文に組み込まれており、select文、insert文、update文、delete文に追加できる

検索case式

when句から返されるデータの型は全て同じでなければならない
when句は上から評価され、1つでもtrueと評価されたらそこでデータが返され処理は終わる。

mysql> SELECT x.first_name, c.last_name,
    ->   CASE
    ->     WHEN active = 0 THEN 0
    ->     ELSE
    ->        (SELECT count(*) FROM rental r WHERE r.customer_id = c.customer_id)
    ->   END
    -> FROM customer c;

Discussion