関係データベースのデータを選択・射影・結合で操作する演算。
関係演算とは、関係データベース(RDB=表でデータを管理する仕組み)の表に対して、欲しいデータを取り出すための操作のことです。表を入れて表を出す、という点が特徴で、代表的なものに選択・射影・結合の3つがあります。
身近な例で考えると、スーパーの在庫表から欲しい情報を抜き出す作業に似ています。「果物だけ見たい(行を絞る=選択)」「商品名と値段だけ知りたい(列を絞る=射影)」「商品ごとの売場も知りたい(別の表とつなぐ=結合)」というように、目的に合わせて表を加工します。
上のツールで▶ボタンを押すと、1つの商品表に選択・射影・結合を順に適用し、表がどう変わっていくかを確認できます。
関係演算の中心となる3つの演算は、表に対して次のように働きます。
・選択:条件に合う行だけを取り出す(横に切り出すイメージ)。例「分類が果物の行」
・射影:必要な列だけを取り出す(縦に切り出すイメージ)。例「商品名と価格の列」
・結合:共通の列の値を手がかりに2つの表をつなぐ。例「商品表に売場を付け足す」
混同しやすいのが選択と射影です。覚え方として、「選択は行(横)、射影は列(縦)」とセットで頭に入れておくと迷いません。選択では列の数が、射影では行の数が変わらない、という点も確認するとより確実です。
関係演算の3つは、データベースを操作する言語SQL(=表に命令を出すための言語)のSELECT文の各部分にそのまま対応しています。1つのSELECT文の中で、3演算を組み合わせて目的のデータを取り出していると考えると理解しやすくなります。
| 関係演算 | 対応するSQL | はたらき |
|---|---|---|
| 選択 | WHERE 句 | 条件で行を絞る |
| 射影 | SELECT の列指定 | 取り出す列を選ぶ |
| 結合 | JOIN 句 | 表どうしをつなぐ |
たとえば「果物の商品名と価格を、売場付きで一覧したい」というSQLは、WHERE で果物の行を選択し、SELECT で商品名・価格を射影し、JOIN で売場の表を結合しています。SELECT文を読むときは、どの部分がどの関係演算にあたるかを意識すると、何を取り出しているのかが正確につかめます。上のツールの「3演算とSQLの対応」も見比べてみてください。