SQLのテーブル結合を理解しよう!JOIN句の種類と使い方とは?
  • facebookページ
  • twitterページ
  • 2020.09.03

    SQLのテーブル結合を理解しよう!JOIN句の種類と使い方とは?

    SQLでデータを取得する際、複数のテーブルからデータを取得したいケースは頻繁に訪れます。

    本記事では、複数テーブルからデータを取得する際に利用するJOIN句を使ったテーブル結合について解説していきます。

    SQLのテーブル結合の種類を知ろう


    SQLのテーブル結合には大きく分け2種類の方法が存在します。

    他にもクロス結合や自己結合といったテーブル結合が存在しますが、あまり利用されることも多くないため、今回は一般的な下記の2種類をご紹介していきます。

    • 内部結合(INNER JOIN)
    • 外部結合(OUTER JOIN)

    サンプルデータ

    今回サンプルとして利用するデータは下記の2つのテーブルです。

    officeテーブル

    regionテーブル

    SQLのテーブル結合1: 内部結合(INNER JOIN)


    最初に内部結合(INNER JOIN)から説明していきます。

    内部結合では、両テーブルで指定したカラムの値が一致するデータのみを抽出する方法です。

    基本構文

    内部結合(INNER JOIN)の基本構文は下記となります。

    サンプル1

    では実際にサンプルデータから内部結合でデータを取得してみたいと思います。

    今回はofficeテーブルのregion_idとregionテーブルのidが一致するデータを抽出するSQLを作成してみましょう。

    実行した結果が下記の通りです。

    このように双方のテーブルで一致するデータのみが抽出されています。

    サンプル2

    もちろんWHERE句で条件指定を加えることも可能です。

    例えば関東地方のデータのみを抽出したい場合には下記のように記述することが出来ます。

    実行した結果が下記の通りです。

    SQLのテーブル結合2: 外部結合(OUTER JOIN)


    続いて外部結合(OUTER JOIN)は、軸となるテーブルのデータ全てに加えて、条件に一致したもう片方のデータを取得します。

    外部結合にはLEFT OUTER JOINとRIGHT OUTER JOINが存在します。

    一般的にはLEFT OUTER JOINが利用されるため、特に理由がない限りはLEFT OUTER JOINを使用すると覚えておきましょう。

    LEFT OUTER JOIN

    まずはLEFT OUTER JOINの基本構文です。

    FROM句の後ろに記述する「テーブル1」が軸のテーブルとなります。

    ポテパンダの一言メモ

    外部結合ではOUTERの部分を記述せず、LEFT JOIN・RIGHT JOINと記述する方法でも問題ありません。

    サンプル

    では実際にサンプルで確認してみましょう。

    実行した結果が下記の通りです。

    このように、軸となるテーブルのデータが全て取得され、結合対象のテーブルに該当データが存在しない場合はNULLが表示されます。

    RIGHT OUTER JOIN

    では今度はRIGHT OUTER JOINの基本構文を確認してみましょう。

    RIGHT OUTER JOINでは、テーブル2が軸となるテーブルです。

    サンプル

    LEFT OUTER JOINのサンプルをRIGHT OUTER JOINに変えたシンプルなものです。

    結果は下記の通りです。

    軸となるテーブルが変更されたことにより、取得結果が大きく異なることをご確認頂けます。

    さいごに:SQLのテーブル結合はシステム開発において必須


    本記事では、SQLのテーブル結合の中でも、特に利用機会の多い「内部結合」と「外部結合」についてご紹介してきました。

    SQL初心者の方には、使いどころの判断が難しいかも知れませんが、様々なデータ取得を繰り返すことで感覚的に理解出来るようになっていきます。

    ご自身が利用したいデータを取得するには、どちらのテーブル結合を使用するべきか考えながら、様々なデータ取得処理に挑戦してみてください。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE