JOIN(結合)とは?じょいん
JOIN(結合)とは、複数の表を、共通の値を持つ列(主キーと外部キーの対応など)で対応付け、1つの結果表として取り出す関係演算。内部結合は対応する行だけを残し、外部結合は対応が無い行もNULLを補って残す。どの表とどの表がつながるかは、正規化した設計の裏返しになる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
関係データベースは、同じ事実を1か所にだけ持たせるために表を分けて設計する。分けた結果、人が読みたい形(注文に顧客名を添えた一覧)はどこにも保存されていないので、問合せの時点で組み立て直す操作が要る。正規化と引き換えに失った「まとまった見え方」を取り戻すのが結合であり、非正規化の議論は、この組み立て直しの費用を前もって払うかどうかの話になる。
具体例
PostgreSQLやMySQLで、注文表と顧客表を顧客IDで内部結合すれば、注文ごとに顧客名を添えた一覧が得られる。一度も注文していない顧客も一覧に残したいときは左外部結合にし、注文側の列をNULLで埋める。
試験での引っ掛け
結合と和(UNION)の向きを取り違えやすい。結合は表を横につないで列が増え、UNIONは縦につないで行が増える。行を絞るのが選択、列を絞るのが射影という対応と合わせて覚える。SQLインジェクションでUNIONが多用されるのは、列数と型さえ合わせれば無関係な表の中身を同じ結果に混ぜ込めるからで、結合とは別の性質を突いている。
関連用語
出た過去問
出典:令和4年度 秋期 情報処理安全確保支援士試験 午前Ⅱ 問21(IPA)
表Rと表Sに対して,次のSQL文を実行した結果はどれか。 〔SQL文〕 SELECT R.X AS A, R.Y AS B, S.X AS C, S.Z AS …
正解:A001,10,NULL,NULL / A002,20,A002,20 / A003,30,A003,30 / A005,50,NULL,NULL
要点:左外部結合は左表の全行を残し対応なしはNULLで埋める
左外部結合は、左側の表の行をすべて残し、結合条件に合う右側の行があれば連結し、なければ右側の列をNULLで埋める。左の表には4行あるのでその4行がすべて出力され、うち条件に合致する2行には右側の値が入り、残る2行はNULLとなる。右側にしかない行は結果に現れない点が要点である。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。