関係代数とSQLの操作
関係代数とSQLは、表を操作するための二つの表現方法である。関係代数は集合演算と射影・選択などの演算で表を扱う理論的な記法であり、SQLはその考え方を実際のデータベース操作として書き表した言語である。両者は同じ結果を求める関係にあるため、一方の演算の意味を理解すると、もう一方の文の意味も読み取りやすくなる。試験では集合演算の意味、実行計画の仕組み、SQL文の結果を正しく予測する力が問われる。
集合演算と和両立の条件
集合演算を用いる際には、二つの関係が和両立であることが前提となる。和両立とは、属性の数と対応する属性の型が一致している関係どうしを指す。この前提が満たされると、和、差、共通といった演算が意味を持つ。 共通部分は、差を二回用いる式によっても表すことができる。Rから、Rに属するがSには属さない要素を除いた残りは、RとSの共通部分になる。
差集合の演算は、一方の関係にだけある行を取り出す操作である。例えば従業員の表から異動の表を差し引くと、両方の表に同じ内容で載っている行が除かれ、どちらか一方にしかない行だけが残る。 この考え方を押さえれば、差の結果に何が残り何が消えるかを、行単位で確かめられる。
和の演算は、両方の関係の行を重複なくまとめる操作である。二つの関係に同じ行があれば、結果では一行にまとめられる。 直積は両方の行の組合せを作るため、行数が掛け算で増える点も、和との違いとして区別しておくべきである。
UNIONとUNION ALLの違い
SQLでUNIONを用いると、二つの問合せの結果を縦に結合し、重複する行を一つにまとめる。一方、UNION ALLは重複を取り除かず、両方の結果をそのまま並べる。同じ内容の行が両方の表にあれば、UNION ALLでは二行として現れる。 在庫を表の二つの地点から合計したい場合など、同じ値を別々に数える必要があるときは、UNION ALLを選ぶのが適切である。
この節の続き
- 統計情報と実行計画
- 集計と条件の順序
- 権限の付与と試験での読み方
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む