← メディア一覧

SQLのJOINでテーブルを繋ぐ魔法

6分23秒 | DBSQLFE

基本情報技術者試験の頻出テーマを解説した動画コンテンツです。

トランスクリプト(字幕テキスト)

どうも、こんにちは。さて、今回はですね、データベースの中でバラバラになっているデータを まるで魔法みたいに、ちゃんと意味のある情報に変えちゃうSQLの超強力な技、JOINについて見ていきたいと思います。 いや、これを知るとデータの世界がガラッと変わって見えてきますよ。 まず、データベースを覗いてみると、データって大体こんな感じにバラバラになってるんですよね。 効率を考えて顧客の情報、商品の情報、注文の情報みたいに別々のテーブルに分けて保存するのが普通なんです。 まあ、初めて見るとちょっと戸惑っちゃうかもしれませんね。例えば、社員のリストを見て「部署コード101」とだけ書いてあったらどうでしょう。 これだけじゃその人が営業部なのか開発部なのか、さっぱりわからないですよね。これじゃレポートも作れないぞ、と。 まさに、これから僕らが解き明かしていくパズルの始まりってわけです。で、その状況がまさにこれです。 左の社員テーブルにはカイさんとかアキさんっていう社員の名前と、謎の部署コードが入ってます。で、一方、右の部署テーブルを見ると その部署コードがどの部署を指すのか、その対応表がちゃんとあるわけです。情報は確かにある。あるんだけど、二つに引き裂かれちゃってる状態なんですね。 でも、ご安心ください。ここからが本番です。SQLには、このバラバラのテーブルを一瞬でガチャンコと繋ぎ合わせる JOINっていう、まあ必殺技みたいな機能があるんですよ。これを、そうですね、魔法の接着剤と呼ぶことにしましょうか。 このJOINの役割はすごくシンプルです。ここに書いてある通り、別々の場所に保管されてた情報を関連する項目を頼りに一つにまとめる。 それで、分析しやすい一枚の大きな表を作り出す。これがJOINのすごいところなんです。もう少し詳しく見てみましょうか。 JOINっていうのは、両方のテーブルに共通して存在する列、今回の例で言えば部署コード。これをキーとして使います。 この共通のコードがまさに接着剤の役目を果たして、関係のある情報同士を横にピタッとくっつけてくれる。そういう仕組みなんですね。 さて、JOINにもいくつか種類があるんですけど、まずは一番基本となるINNER JOIN。これが一体どんな仕組みでこのパズルを解いてくれるのか その中身をちょっと覗いていきましょう。INNER JOIN、日本語だと内部結合って言いますね。このJOINには一つとっても大事なルールがあります。 それは、両方のテーブルにちゃんと一致するキーを持つ行だけを結果として残す、っていうことです。つまり、お互いに「初めまして、僕の相方ですね」って 見つけ合えたペアだけが最終的な結果に表示されるってことなんです。片方にしかいないデータは、残念ながらこの段階では出てこないんですね。 そしてこれが、INNER JOINを使った結果です。どうですか?見事にパズルが完成しましたよね。カイさんの隣には営業部 アキさんの隣には開発部ってちゃんと部署名が表示されてます。これで部署コード101の謎も、一発で解けました。 いやー、めでたしめでたし、と、これで全て解決!とはなかなかいかないのがデータの面白いところなんですよね。 もし、このパズルに欠けているピースがあったらどうなるのか。ここからJOINのもう一歩深い世界、OUTER JOINの出番です。 例えば、こんなケースを考えてみましょう。まだ部署が決まっていない新入社員が社員テーブルにだけ登録されたとします。 この人には、対応する部署の情報が部署テーブルにはまだないですよね。さあ、INNER JOINだけだと、この新入社員のデータ、どうなっちゃうと思いますか? そうなんです。INNER JOINのルール、思い出してください。両方のテーブルにデータがある行だけを繋ぐ、でしたよね。 つまり、部署情報っていう相方が見つからない新入社員のデータは結果のテーブルから、そう、きれいさっぱり消えてしまうんです。これはちょっと困りますよね。 この問題をスマートに解決してくれるのが、LEFT OUTER JOIN、左外部結合です。このJOINは、基準になるテーブル、この場合だと左側の社員テーブルのデータを 全部残すぞ、と。たとえ右側の部署テーブルに相方がいなくても、こっちの社員は全員表示してくださいっていう、ちょっと強い命令ができるんですね。 ここで、二つのJOINをちょっと比べてみましょうか。左のINNER JOINは、二つの円が重なる共通部分だけを取り出してるイメージですね。 それに対して、右のLEFT OUTER JOINは、重なる部分に加えて、基準にした左側の円をまるっと全部保持している。これが一番の違いです。 このおかげで、欠けているピースもちゃんと拾い上げることができるんです。そしてこちらが、LEFT OUTER JOINを使った結果です。 注目してください。INNER JOINでは消えちゃった、部署がまだ決まっていない新入社員の行がちゃんと表示されてますよね。 もちろん、対応する部署名はないので、その部分はNULL、つまりデータが空っぽですよっていう意味の表示になります。 でもこれで、誰一人見逃すことなく、全ての社員データを一覧できるようになったわけです。さて、それでは最後に 今日の魔法の呪文を忘れないように、一番大事なポイントをまとめて頭にしっかりインプットしておきましょう。ポイントはシンプルに三つです。 まず、JOINは共通の列を接着剤にしてテーブルを合体させる操作。次に、INNER JOINは両思いのデータ、つまり両方に相手がいる行だけを繋げます。 そして、OUTER JOINは片方のテーブルを主役にして、相手がいなくてもそっちのデータは全部残す。このJOINという魔法を使いこなすことで バラバラだったただの数字や文字、つまりデータがちゃんとビジネスに役立つ意味のある情報へと進化するんです。 さあ、このJOINという強力なツールを手にした今、皆さんが持っているデータは一体どんな価値ある情報に変わるでしょうか。 ぜひ、その無限の可能性を探ってみてください。今日の解説はここまでです。ありがとうございました。

このコンテンツは Web society で視聴・学習できます。