【SQL】テーブルを結合する -JOIN句いろいろ

  • 2022年5月24日
  • 2023年3月4日
  • DB
  • ,
DB

前回はテーブルを結合するときの種類についてまとめました。

今回は、SQLで具体的にどのように書くかをまとめていきたいと思います。

環境

DB:PostgreSQL

テーブル

以下学生テーブルと学部マスタテーブルを学部IDで結合します。

学生テーブルと学部マスタ

内部結合

まずは内部結合です。SQLでは”INNER JOIN”句で結合するテーブルを指定します。

SELECT s.studentnumber, s.studentname, s.facultyid, f.facultyname 
FROM student s 
INNER JOIN facultymaster f 
ON s.facultyid = f.facultyid

ON句以降で結合条件を指定します。今回はそれぞれの学部IDで結合しています。

この時の結果は以下の通りです。

内部結合

また、SQLのJOINはデフォルトで内部結合になります。なので、INNER JOINとせず単にJOINとしても同様の結果(内部結合)が得られます。

SELECT s.studentnumber, s.studentname, s.facultyid, f.facultyname 
FROM student s 
JOIN facultymaster f 
ON s.facultyid = f.facultyid

外部結合

左外部結合

左外部結合にはLEFT JOIN句を用います。FROM句でメインとなるテーブルを、LEFT JOIN句で結合するテーブルを指定します。

SELECT s.studentnumber, s.studentname, s.facultyid, f.facultyname 
FROM student s 
LEFT JOIN facultymaster f 
ON s.facultyid = f.facultyid
左外部結合

右外部結合

右外部結合にはRIGHT JOIN句を用います。用法は左外部結合と同じです。

SELECT s.studentnumber, s.studentname, s.facultyid, f.facultyname 
FROM student s 
RIGHT JOIN facultymaster f 
ON s.facultyid = f.facultyid
右外部結合

学部ID(facltyID)も空白になっていますが、これは学生テーブル(student)を参照しているためです。

完全外部結合

完全外部結合にはFULL OUTER JOIN句を用います。

SELECT s.studentnumber, s.studentname, s.facultyid, f.facultyname 
FROM student s 
FULL OUTER JOIN facultymaster f 
ON s.facultyid = f.facultyid
完全外部結合

DBについてより学ぶ

データベース、SQLについて、書籍を通してより深く知ることができます。ネットでも情報は手に入りますが、書籍も是非検討してみてください^^

まとめ

SQLでテーブルを結合する方法をまとめました。

参照テーブル、結合条件は一緒でも、結合方法の違いで得られる結果も異なります。注意して使い分けるようにしてください。

ではでは👋