
photo credit:
tec_estromberg via
photopin cc
こんにちは!基本情報処理試験ではSQLに関する問題を捨てていましたOsamuです。
最初から午後問の1つであるDB系の問題は捨てて、他の問題に集中する事でどうにか合格しました。捨て身です、捨て身の作戦です。しかし、結構時間もギリギリなので1つくらい捨てるのも良い方法かと。
そんな私ですが、最近はSQLに触れる事となりました。
SELECT、FROM、WHEREくらいは何だか理解できるのですが、LEFT JOINが中々理解できずに困っておりました。
そんな時に自分でSQLを実行して、FROM、WHEREで出力した場合と、LEFT JOINで出力した場合の2つの出力結果を比較してみると何だかイメージが湧いたので、自分の為にも、そして「LEFT JOINって何だよ!」という私と同じSQL初心者の方の為にも共有しておきましょう!
テストに使用したテーブル
まずは分かりやすく日本語にしておりますが、今回は以下の2つのテーブルを活用しています。
FROM、WHEREで出力した場合
実行したSQL
SELECT *
FROM kokyaku, uriage
WHERE kokyaku.cd = uriage.cd
実行結果

如何でしょう。
kakakuテーブルの102 BB商事、105 EE商事のデータは当たり前ですが抽出されません。だって両テーブルのcdがイコールである事を抽出条件にしているのですから、当たり前ですね。
LEFT JOINで出力した場合
続いてLEFT JOINを実行してみましょう。
実行したSQL
SELECT *
FROM kokyaku
LEFT JOIN uriage ON kokyaku.cd = uriage.cd
実行結果

LEFT JOINの場合は、
kakakuテーブルの102 BB商事、105 EE商事も抽出されます。uriageテーブルにないデータ部分はnullとなります。
両方の出力結果を比較すると?
2つの出力結果を比較すると以下の通りとなります。

如何でしょうか?LEFT JOINのイメージは理解できましたか?
一度phpMyAdmin辺りを使って、自分で2つの処理を実行してみるとさらに理解が深まるかもしれません。是非試してみてください。