関係演算とSQLによるデータ操作
要点と定義
関係データベースのデータ操作では、関係代数の選択・射影・結合・直積や、集合の和・差・共通部分を使って、必要な行と列を表します。現行シラバスの範囲は、こうした演算の理解に加え、SELECT文による行・列の選択、結合、集合関数、グループ化、埋込みSQLのカーソル操作などです。以下の個別の判定方法や式は、過去の出題で扱った補足です。
選択は条件に合う行を取り出し、射影は必要な属性(列)を取り出します。等結合は、二つの関係の直積から結合条件に合う組を選ぶ操作として表せます。属性がn個ある関係について属性部分集合の数を数える場合、各属性を含めるかどうかが二択なので2ⁿ通りです。たとえば3属性なら、空集合も含めて8通りです。この数え方は、空属性集合と元の関係と同じ結果になる射影も数える条件での補足です。
集合差R−Sは「Rに属し、Sには属さない要素」です。そのためR−(R−S)は、RからSに含まれない要素を取り除いた結果、すなわちRとSの共通部分になります。集合演算では、対象となる関係の属性構成など、演算可能な条件を満たす必要があります。
SELECT文の副問合せは、外側の行に応じて内側の条件を評価できます。たとえばNOT EXISTSは、相関条件に一致する行が存在しない場合に真となります。上司欄に現れる社員コードを副問合せで照合する形なら、その欄に一致するコードを持たない社員を選びます。具体的なNOT EXISTS判定は、過去の出題で扱った補足です。
結合では、どちらの表の行を必ず残すかを先に決めます。左外部結合は左側の行を残し、右側に対応行がなければ右側の列をNULLで補います。たとえば対象行をすべて残し、対応する担当者がいない場合も表示するなら、対象表を左側に置きます。過去の出題では、左表の行を絞る条件はWHERE句に置き、右表に求める対応条件はON句に置くことで、対応行のない左表行を保つ例も扱われました。これらの具体的な条件配置は過去の出題で扱った補足です。
GROUP BYは指定したキーごとに行をまとめ、COUNTやMAXなどの集合関数で各グループの値を求めます。COUNT(DISTINCT 品目)なら、グループ内のNULLでない品目から重複を除いて数える、というSQLの用法を想定します。SQLの方言やNULLの扱いが結果に関わる場合があるため、実際の処理では利用するDBMSの仕様と問合せ条件を確認します。過去の出題では、行番号が追加ごとに増える条件の下で、会員と項目の組ごとにMAX(行番号)を選び、CASE式とMAXで会員ごとの値を集約する方法が扱われました。MAXは最大の値を取り出す集約関数です。
埋込みSQLのカーソル操作では、カーソルが指す現在行を更新するための位置指定を使う場合があります。WHERE CURRENT OFの後には対象カーソル名を指定します。この構文の具体例は過去の出題で扱った補足です。
この節の続き
- 適用条件と例
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む