データ操作
要点と定義
関係データベースの操作には、集合演算や関係演算があり、SQLはデータ定義やデータ操作に用いる。SELECT文は指定した列と行を問い合わせ、WHERE句、表の結合、副問合せ、集約、グループ化、並べ替えなどを組み合わせる。DISTINCTは結果の重複行を除く。ビューは問合せに基づいて定義する仮想的な表で、列名や抽出する行を指定できる。更新可能性は定義に依存し、ビューの各行を基底表の行に対応付けられることが重要となる。ウィンドウ関数は、PARTITION BYで定めた区分ごとに、ORDER BYで指定した順序に基づき計算する。集約関数SUMは値を合計し、該当行がない場合などに結果がNULLとなることがある。COALESCEは引数を左から評価し、最初のNULLでない値を返す。参照制約のCASCADEは参照先の行の削除を参照元へ連鎖させる削除規則である。
適用条件と例
SELECT文では、WHERE句で行を条件抽出し、SELECT句で必要な列を指定できる。副問合せの集約結果と各行の値を比較すれば、表全体の平均などを基準に行を抽出できる。DISTINCTを付けると、抽出結果の重複行を一つにまとめて数えられる。相関副問合せでは、内側の問合せが外側の行の値を参照する。NOT EXISTSは、その外側の行に関連し、指定条件を満たす行が存在しない場合に真となる。ビューは問合せ結果に名前を付けた仮想的な表であり、列名を別名にしたり、WHERE句で行を絞ったりできる。単一の基底表から列や行を選ぶ単純なビューは更新可能な場合があるが、DISTINCTや集約を含むビューでは更新可能とは限らない。ウィンドウ関数は、行を一つに集約せずに、指定した区分内で順位などを計算する。例えば学生ごとに実施回の昇順で番号を付けると、各学生の初回を判定できる。複数行の値の合計を調べ、該当行がない場合は0として扱うには、SUMとCOALESCEを組み合わせられる。参照制約の削除規則CASCADEは、参照先の行の削除に伴い参照元の行も削除する指定である。ストアドプロシージャは呼出しによって実行され、データ変更時の自動起動はTRIGGERの適用例である。
各行の差額を求め、その平均値を基準にWHERE句で行を抽出する。比較演算子が厳密な大なりなら平均値と等しい行は含まれない。抽出後に仕入先コードへDISTINCTを適用すると、複数の該当行に現れる同一コードは一つとして数えられる。
単一の基底表から列を選び、WHERE句で行を絞り込む単純なビューは、基底表の行との対応を保てるため更新可能な場合がある。DISTINCTによる重複排除やGROUP BY、集約関数による集約を含む定義では、ビューの行から変更対象となる基底表の行を特定できず、更新可能とは限らない。
相関副問合せは外側の製品番号を内側で参照し、その製品に関連する在庫行を調べる。NOT EXISTSは在庫数が条件を超える関連行が一つもない製品を残す。関連する在庫行が存在しない製品もこの条件を満たし、外側でDISTINCTを使えば製品番号ごとに一行となる。
ストアドプロシージャはDBMS側に登録した処理を呼び出して実行するため、処理をまとめて通信回数を抑えられる。データ変更を契機に定義済みの処理を自動的に実行する仕組みはTRIGGERである。
参照制約で、参照先の行を削除したときに対応する参照元の行も連鎖して削除する規則はCASCADEである。これは参照整合性に関する削除規則であり、集合演算や一意性制約とは異なる。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む