SQLによる問合せと関係演算
関係データベースにおけるSQLの問合せは、表を関係として扱い、選択・射影・結合などの関係演算を組み合わせて目的の結果を得る仕組みである。SELECT句で取り出す列を、FROM句で対象の表を、WHERE句で行の条件を指定し、その組合せによって結果の表が定まる。問合せが何を返すかは、各演算の意味を理解して手順として追跡すれば判断できる。
集合演算と射影の仕組み
関係の射影は、表から指定した列だけを取り出す演算である。取り出した結果には同じ値の組が重複して現れ得るが、関係の上では同じ属性値の組は一つにまとめられる。そのため、SQLで射影と同じ結果を得るには、重複行を除く DISTINCT を指定する必要がある。列を絞り込む操作と、重複を除く操作は別の役割であることを押さえておくとよい。
和は、同じ属性構成をもつ二つの関係の行を合わせ、重複を除いて一つの関係にまとめる演算である。両方に同じ行が含まれるときは一度だけ残るため、結果の行数は二つの関係の行数の合計より少なくなり得る。 差は、一方の関係にだけ含まれる行を取り出す演算であり、両方に含まれる行は結果に残らない。直積は、一方の関係の各行と他方の関係の各行をすべて組み合わせる演算であり、列数は両者の列数の合計になる。行を合わせるのか、行どうしを組み合わせるのかを区別することが、結果の表を予測する基本となる。
条件の組合せと否定の読み方
WHERE句に並べた条件は、AND と OR が混在すると AND が先に評価されるという優先順位に従って解釈される。そのため、括弧で囲んだ OR の条件を別の条件と結び付けるかどうかによって、結果に含まれる行が変わる。括弧を付けない場合と付けた場合では対象となる社員が異なるため、問合せを読む際には括弧の位置を最初に確認する必要がある。
この節の続き
- 外部結合と性能の実際の場面
- 試験で問われやすい区別
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む