【いんなーじょいん】

INNER JOIN とは?

公開:
💡 お互いにマッチする行だけ集合!片思いはお断り
📌 このページのポイント
INNER JOIN(内部結合) 注文テーブル 注文1 → 商品A 注文2 → 商品B 注文3 → 商品X 商品テーブル 商品A: りんご 商品B: みかん 商品C: バナナ ✗ マッチなし INNER JOIN 結果(一致する行のみ) 注文1 | 商品A | りんご 注文2 | 商品B | みかん
INNER JOINのイメージ
ひよこ ひよこ
INNER JOINって何をするものなの?
ペンギン先生 ペンギン先生
2つのテーブルを「共通の列」でくっつける操作だよ。たとえば「注文テーブル」と「商品テーブル」を商品IDで結合すると、各注文に商品名や価格の情報を付けられるんだ
ひよこ ひよこ
INNERってどういう意味なの?
ペンギン先生 ペンギン先生
ベン図でいう「共通部分(積集合)」のことだよ。両方のテーブルに一致するデータがある行だけを返すんだ。片方にしかないデータは結果に含まれないよ
ひよこ ひよこ
じゃあ注文はあるけど商品マスタにない場合は?
ペンギン先生 ペンギン先生
その注文は結果に表示されないよ。一致しない行も含めたい場合はOUTER JOINを使うんだ。INNER JOINは「両方にあるもの」だけを確実に取りたいときに使うんだよ
ひよこ ひよこ
JOINって書くだけでもINNER JOINになるの?
ペンギン先生 ペンギン先生
そう!SQLではJOINと書くだけでINNER JOINと同じ意味になるんだ。でも明示的にINNER JOINと書いた方がコードを読む人にとって分かりやすいから、チームのルールに合わせるといいよ
ひよこ ひよこ
パフォーマンスが心配なんだけど…
ペンギン先生 ペンギン先生
結合する列にインデックスが張ってあれば高速に処理できるよ。逆にインデックスがないと全行の総当たりになって遅くなる。JOINを使うテーブルの結合キーには必ずインデックスを作っておくのが鉄則だね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「INNER JOIN」って出てきたら「両方のテーブルで一致するデータだけを結合する操作」と思えればだいたいOK!
📖 おまけ:英語の意味
「Inner Join」 = 内部結合
💬 inner(内側)は両方のテーブルの共通部分、つまり集合の「交わり」を取るイメージだよ
← 用語集にもどる