FE EXAM

関係演算(選択・射影・結合)

関係データベースのデータを選択・射影・結合で操作する演算。

INTERACTIVE VISUALIZATION
選択(行)
射影(列)
結合
フェーズ
idle
行数
4
列数
3
シナリオ
ステップ1 / 7
STEP 1/7元の表(リレーション)関係データベース(RDB=表でデータを管理する仕組み)の表は「リレーション」とも呼ばれます。ここでは商品名・分類・価格をもつ商品表を題材にします。この表に対して、選択・射影・結合という3つの演算を順に試していきます。
商品表
商品名分類価格
りんご果物120
にんじん野菜80
ぶどう果物400
キャベツ野菜150
3演算とSQLの対応
SELECT 商品名, 価格  ← 射影(列を選ぶ)
FROM 商品 JOIN 分類マスタ … ← 結合
WHERE 分類 = '果物'  ← 選択(行を絞る)
解説

📌
関係演算とは

関係演算新しい表

関係演算とは、関係データベース(RDB=表でデータを管理する仕組み)の表に対して、欲しいデータを取り出すための操作のことです。表を入れて表を出す、という点が特徴で、代表的なものに選択・射影・結合の3つがあります。

身近な例で考えると、スーパーの在庫表から欲しい情報を抜き出す作業に似ています。「果物だけ見たい(行を絞る=選択)」「商品名と値段だけ知りたい(列を絞る=射影)」「商品ごとの売場も知りたい(別の表とつなぐ=結合)」というように、目的に合わせて表を加工します。

上のツールで▶ボタンを押すと、1つの商品表に選択・射影・結合を順に適用し、表がどう変わっていくかを確認できます。

🔍
3演算の意味

選択(行)射影(列)結合

関係演算の中心となる3つの演算は、表に対して次のように働きます。


選択:条件に合うだけを取り出す(横に切り出すイメージ)。例「分類が果物の行」
射影:必要なだけを取り出す(縦に切り出すイメージ)。例「商品名と価格の列」
結合:共通の列の値を手がかりに2つの表をつなぐ。例「商品表に売場を付け足す」

混同しやすいのが選択と射影です。覚え方として、「選択は行(横)、射影は列(縦)」とセットで頭に入れておくと迷いません。選択では列の数が、射影では行の数が変わらない、という点も確認するとより確実です。

🗒️
SQLとの対応

関係演算の3つは、データベースを操作する言語SQL(=表に命令を出すための言語)のSELECT文の各部分にそのまま対応しています。1つのSELECT文の中で、3演算を組み合わせて目的のデータを取り出していると考えると理解しやすくなります。

関係演算対応するSQLはたらき
選択WHERE 句条件で行を絞る
射影SELECT の列指定取り出す列を選ぶ
結合JOIN 句表どうしをつなぐ

たとえば「果物の商品名と価格を、売場付きで一覧したい」というSQLは、WHERE で果物の行を選択し、SELECT で商品名・価格を射影し、JOIN で売場の表を結合しています。SELECT文を読むときは、どの部分がどの関係演算にあたるかを意識すると、何を取り出しているのかが正確につかめます。上のツールの「3演算とSQLの対応」も見比べてみてください。

練習問題

🎯
基本情報技術者 練習問題

Q1.関係演算の「選択」の説明として正しいものはどれか。
A.必要な列だけを取り出す演算
B.条件を満たす行だけを取り出す演算
C.2つの表を共通の列でつなぐ演算
D.行を並べ替える演算
Q2.商品表(商品名, 分類, 価格)から「商品名」と「価格」の2列だけを取り出した。この関係演算はどれか。
A.選択
B.結合
C.射影
D.和(UNION)
Q3.関係演算とSQLの対応として正しいものはどれか。
A.選択はSELECT句、射影はWHERE句に対応する
B.選択はWHERE句、射影はSELECTで選ぶ列、結合はJOINに対応する
C.3演算ともORDER BY句に対応する
D.関係演算とSQLには対応関係がない

関連コンテンツ