Developer

【SQL基礎】結合とは
2021.03.31
Lv1

【SQL基礎】結合とは

「結合」の話に入る前に

リレーショナルデータベースでは、データを複数のテーブルに分けて管理します
その方がデータを効率よく管理できるからです。

以下の教員テーブルについて考えてみましょう。

これは、データが一つのテーブルにまとまっている状態です。

上図のテーブルは下図のように分けることができます。

もしかすると、データが見づらくなっただけだと感じるかもしれません。
しかし、扱うデータがさらに大規模になったとき、このように複数のテーブルに分けておくことでデータの変更や移行にかかる手間を減らすことができます


「結合」について

前節で、データは複数のテーブルで管理されることを確認しました。

ただ、複数のテーブルを一つのテーブルとしてまとめて取得したいというときにはどうすればよいのでしょうか。

そういうときこそ「結合」の出番です。

「結合」とは、別々のテーブルをくっつけて一つにすることです。

複数のテーブルから必要な要素を取り出して、一つのテーブルとしてまとめることができます。

以下の図が結合のイメージです。


結合の書式

結合するときの基本的な書式は以下の通りです。
①SELECT句で取得したいカラムを指定する。
②FROM句でテーブル(結合される側)を指定する。
③JOIN句でテーブル(結合する側)を指定する。
④ON句で結合する条件を指定する。

次節で紹介する結合の種類によって書き方が多少変わります。

詳細はそちらをご覧ください。


結合の種類

結合にはいくつかの種類があります。

1.内部結合(INNER JOIN)
複数のテーブルから結合条件に一致するレコードのみを結合する方法です。


内部結合の詳細はこちらでご確認ください。

2.外部結合(OUTER JOIN)
一方のテーブルを基準として、もう一方のテーブルから結合条件に一致するレコードを結合する方法です。
外部結合は、さらに3種類に分けることができます。

2-a.左外部結合
先に指定したテーブルを基準にする。(前節の②で指定したテーブル基準)

※図中の”null”というのは、値が入っていない状態のことです。


2-b.右外部結合
後に指定したテーブルを基準にする。(前節の③で指定したテーブル基準)


2-c.完全外部結合
両方のテーブルを基準にする。


MySQLではサポートされていません。

外部結合の詳細はこちらでご確認ください。

3.クロス結合(CROSS JOIN)
一方のテーブルに存在するレコードともう一方のテーブルに存在するレコードをすべて結合する方法です。


クロス結合の詳細はこちら(準備中)でご確認ください。


学習のポイント

・「結合」は複数のテーブルを一つにまとめて取得したいときに使う。

・「結合」のキーワードは”JOIN”と”ON”。

・「結合」は、「内部結合」、「外部結合」、「クロス結合」の三種類に大別される。


練習問題

問、次の図が表す結合の種類は何でしょうか。


答え

①(右)外部結合

図中の黒いレコードはnullと結合されています。

つまり、条件が一致していないレコードに関しても結合を行っています。

右側のテーブルが基準になっているので、左側のテーブルの黄色いレコードは結合されていません。

②内部結合

条件が一致したレコードのみを結合しています。

 

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ