pulpul 日本の試験

データベーススペシャリスト 概念書 · データベース

データ操作

要点と定義

関係データベースのデータ操作では、要求に応じて行や列を選び、表を結合し、集約や順位付けで結果を整えます。関係演算には選択・射影・結合・商などがあり、集合演算には和・差・共通があります。SQLのSELECT文では、取得する列、対象の表、行の条件などを指定します。

選択は条件に合う行を取り出し、射影は必要な列を取り出します。たとえば、貸出記録から返却期限を過ぎた行だけを残すのは選択、記録から利用者名と返却日だけを取り出すのは射影です。

結合では、INNER JOINは結合条件に一致する行を組み合わせます。外部結合は指定した側の行を残し、相手側に一致する行がなければ相手側の列をNULLにします。文書ごとに作成者と承認者の氏名を付けるには、社員表を二つの役割で参照し、異なる相関名を付けてそれぞれのIDと結びます。対応社員のいない文書も残す場合は、文書表を左側に置くLEFT OUTER JOINが使えます。過去の出題で扱った補足です。

SQLのNULLは通常の値とは異なり、NULLとの等価比較では一致を判定できません。外部結合で相手の行がない場合にもNULLが現れます。AVGなどの集約関数はNULLを平均の対象に含めません。たとえば、値が40と80の行に加えNULLの行があれば、AVGの結果は(40+80)÷2=60です。NULLを0として平均に含める要件なら、別途その扱いを明示する必要があります。過去の出題で扱った補足です。

相関副問合せで使うNOT EXISTSは、外側の行に対応する行が副問合せ結果に存在しないことを調べます。たとえば、各社員について、その社員コードを上司欄に持つ行がない社員を探せます。NULLとの等価比較は一致を作らないため、NULLを特別なコードとして数えない点に注意します。過去の出題で扱った補足です。

UNIONは問合せ結果を合わせ、重複行を除きます。同じ表を二度UNIONした結果が元の表と同じになるのは、元の表に重複行がない場合です。行数や列数、NULLの有無だけでは重複の有無は決まりません。過去の出題で扱った補足です。

適用条件と例

関係演算の商R÷Sは、Sの各値すべてと組になっているR側の値を求めます。たとえば、担当者と研修の組を持つ表Rと、必須研修の一覧Sがあれば、商は必須研修のすべてに対応する担当者です。一部だけに対応する担当者は含みません。過去の出題で扱った補足です。

二つの表の片方にだけある行を両方向から調べるには、FULL OUTER JOINで両表の行を残し、結合できなかった側の列がNULLの行を選びます。存在する側のIDを取り出すには、COALESCEのように最初のNULLでない値を返す機能を使えます。たとえば、会員表と申込表で片方にだけ登録されたIDを確認できます。過去の出題で扱った補足です。

この節の続き

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む