データ操作
要点と定義
関係データベースでは、関係代数の演算で表を選択・射影・結合するほか、同じ属性構成の関係に和・差などの集合演算を適用する。和は両方の関係の行をまとめ、重複する行は一度だけ残す。例えば、二つの関係に共通行が一つあり、ほかの行が異なる場合、その行を一度だけ含む和が得られる。
射影は指定した列を取り出す演算で、関係の結果では重複する組を一つにまとめる。SQLで同じ結果を得るには、列を指定したSELECTにDISTINCTを付ける。
実表に関係演算を適用して得る表を導出表という。導出表は射影や結合などから得られ、複数の実表を使う場合に限らない。ビューはこのような表を定義する仕組みであり、更新できるかどうかは定義による。
SQLでは、SELECT文で行や列を選び、条件や表の結合を指定する。複数条件の組合せでは、比較演算子やINなどの述語が、求める条件を正しく表すようにする。例えば、審判の所属チームが対戦する二チームのどちらとも異なることを調べる場合は、所属チーム名が両チーム名の集合に含まれない条件にする。
参照制約は、参照先の値との整合性を保つための制約である。外部キーを持つ表に行を追加するとき、参照先に対応する値がなければ、追加が拒否される可能性がある。
データベース言語にはデータ定義言語やデータ操作言語があり、利用者へのアクセス権の付与にはGRANT文を用いる。
適用条件と例
ブラウザからの要求をWebサーバが処理する例では、DBに接続し、SQL文を組み立ててアクセスし、取得結果を使ってHTML文書を組み立てて送信し、最後にDBを切断する。
対戦チーム以外に所属する審判を選ぶ条件では、審判の所属チーム名が出場チーム二つのどちらとも一致しないことを指定する。
ストアドプロシージャは、DBMSに保存した一連の処理を呼び出すことで、アプリケーションとDBMS間の通信量を減らせる場合がある。
誤りやすい点
射影とSQLの列指定を対応させるとき、SQLの重複行は自動的に関係の射影と同じ扱いになるとは限らないため、重複を除く必要があるか確認する。
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む