関係代数 (関係モデル)
SELECT A, B FROM R
商は、演繹して導き出される演算子であるため、関係代数の他の演算子を使って定義される。 関係 R と S があり、 β {\displaystyle \beta } を R の属性集合、 γ {\displaystyle \gamma } を S の属性集合とし、 R ′ {\displaystyle R'} を次のとおりとする。 R ′ := β ∖ γ {\displaystyle R':=\beta \setminus \gamma }
このとき、商は次のとおり定義される。
R ÷ S := π R ′ ( R ) − π R ′ ( ( π R ′ ( R ) × S ) − R ) {\displaystyle R\div S:=\pi _{R'}(R)-\pi _{R'}((\pi _{R'}(R)\times S)-R)}
和(union)演算 R ∪ S は、R と S を、R の全ての組(タプル、行)と S の全ての組で構成される一つの関係を返す。 この演算では、R と S が型適合であることが前提となる。 重複する組は除去される。
参考: 和集合
先述した通常の結合(内結合)が結合対象となる2つの関係の組を対応づけて関係を返すのに対し、外結合(外部結合、outer join)は、内結合により返される組に加え、外結合の対象となる関係の組で内結合により対応づけられる組が存在しない組についても、存在しない部分を null という値ないし印で満たして、外結合の結果として返される関係に追加する。
3種類の外結合が定義されている。 すなわち左外結合、右外結合、完全外結合の3種類がある(「外」の字は省略される場合がある)。
外結合については、関係モデルにおける null を否定する立場などから、導入すべきでないとの意見があり、議論の対象となっている。 Tutorial D では外結合に相当する機能は無い。
null についてはここでは説明せず、外結合で満たされるべき場所に割り当てる概念である、と述べるにとどめる。 ここで述べる null は、データベース言語 SQL における NULL であるとの前提をしない。 また null は値ではなく印であるとの前提や、賛否両論のある三値論理を導入するとの前提もしない。
R UNION S
SELECT * FROM R, S
そして B {\displaystyle B} は関係 R {\displaystyle R} の属性のみから構成され、 C {\displaystyle C} は関係 P {\displaystyle P} の属性のみから構成され、 D {\displaystyle D} は R {\displaystyle R} と P {\displaystyle P} の両方の属性から構成されるようにする。 B {\displaystyle B} 、 C {\displaystyle C} 、 D {\displaystyle D} のいずれかが欠如している場合もある。 以上の変換は次のように示される。
σ A {\displaystyle A} ( R {\displaystyle R} × P {\displaystyle P} ) = σ B {\displaystyle B} ∧ C {\displaystyle C} ∧ D {\displaystyle D} ( R {\displaystyle R} × P {\displaystyle P} ) = σ D {\displaystyle D} (σ B {\displaystyle B} ( R {\displaystyle R} ) × σ C {\displaystyle C} ( P {\displaystyle P} ))