今回はデータベース結合の種類についてご紹介していきます。
SQL上で複数のテーブルからデータを参照したい場合、テーブル結合を使用します。結合には、主に5つの種類があり、それぞれの用途に応じて、使い分けされています。
【内部結合】
内部結合は、複数テーブルの結合条件に一致したもののみを結合する方法です。innerは、省略可能となります。
基本構文 : select (テーブル名.)カラム名 from テーブル1 inner join テーブル2 on テーブル2.カラム名 = テーブル1.カラム名
# テーブル1にテーブル2を内部結合
例)結合条件をユーザーテーブルの都道府県番号と都道府県テーブルに指定
【左(右)外部結合】
優先されるテーブルを指定して結合する方法です。優先されるテーブルの全レコードが表示され、そのレコードに一致するものを結合されたテーブルから表示させます。
基本構文 : select (テーブル名.)カラム名 from テーブル1 left(right) outer join テーブル2 on テーブル2.カラム名 = テーブル1.カラム名
# テーブル1にテーブル2を外部結合。leftの場合、テーブル1が優先(Rightなら、テーブル2が優先)
例)ユーザーテーブルの都道府県番号と都道府県テーブル左外部結合
#都道府県テーブルに設定されていない、「4」はNull(空白)として表示される
【完全外部結合】
結合する両方のテーブルが優先となり、結合条件の一致の有無にかかわらずレコードすべてを取得する方法です。
基本構文 : select (テーブル名.)カラム名 from テーブル1 full join テーブル2 on テーブル2.カラム名 = テーブル1.カラム名
例)ユーザーテーブルの都道府県番号と都道府県テーブル完全外部結合
【交差結合】
両方のテーブルのデータのすべての組み合わせを表示する方法です。実務においては、現在あまり使われることはありません。
基本構文 : select (テーブル名.)カラム名 from テーブル1 cross join テーブル2 on テーブル2.カラム名 = テーブル1.カラム名
例)ユーザーテーブルの都道府県番号と都道府県テーブル交差結合
以上、データベース結合の種類についてでした。
ご参考いただけると幸いです。
■参考資料
https://sql-oracle.com/sqlserver/?p=1109
https://www.dbonline.jp/mysql/join/index4.html