2개 이상의 table에 있는 데이터를 한 번에 조회
SELECT * FROM table_A a JOIN table_B b on a.b_id = b.id;
JOIN
만 작성하면 INNER
가 생략되어 있는 것이다.SELECT * FROM table_A a LEFT JOIN table_B b on a.b_id = b.id;
SELECT * FROM table_A a RIGHT JOIN table_B b on a.b_id = b.id;
SELECT * FROM table_A a FULL JOIN table_B b on a.b_id = b.id;
left (outer) join
- table_A의 b_id가 null이더라도 table_A의 tuple은 모두 조회한다. (table_A는 모두 조회, table_B는 모두 조회 X)right (outer) join
- table_B의 tuple을 모두 조회하고 table_B의 id에 해당하는 table_A의 b_id가 없으면 그 자리는 null로 채운다. (table_A는 모두 조회 X, table_B는 모두 조회)full (outer) join
- table_A와 table_B가 join condition이 맞지 않아도 모두 조회된다.
equi join join condition에서 = 연산자를 사용하는 JOUIN
SELECT * FROM table_A NATURAL JOIN table_B;
SELECT * FROM table_A NATURAL LEFT JOIN table_B;
SELECT * FROM table_A NATURAL OUTER table_B;
SELECT * FROM table_A NATURAL FULL table_B;
SELECT * FROM table_A NATURAL JOIN table_B;
== SELECT * FROM table_A a JOIN table_B b on a.b_id = b.b_id;
FROM table_A, table_B; -- 묵시적 cross join
FROM table_A CROSS JOIN table_B -- 명시적 cross join