INNER JOIN
가장 많이 사용되는 JOIN 기법으로 두 개의 합쳐서 새로운 테이블을 만들고 조건에 부합하는 레코드만 반환한다.
SELECT A.* FROM A INNER JOIN B ON B.n = A.n;
- 3개의 테이블 합치기
SELECT A.* FROM A INNER JOIN B ON B.n = A.n INNER JOIN C ON C.n = A.n;
LETF OUTER JOIN
먼저 기술된 왼쪽 테이블을 기준으로 오른쪽 테이블의 데이터를 합치며 오른쪽 테이블에 만족하는 정보가 없다면 NULL로 반환한다.
SELECT A.*, B.* FROM A LEFT JOIN B ON B.n = A.n;
코드와 그림의 예시는 다르지만 좋은 예제라고 생각한다. 왼쪽 테이블의 x값과 오른쪽 테이블의 y값이 같다는 조건을 걸고 left outer조인을 하게 되면 아래처럼 모든 값이 나오지만 왼쪽 테이블에 없는 값이 잇다면 NULL로 채워지게 된다.
RIGHT OUTER JOIN은 LEFT OUTER JOIN과 비슷하지만 기준 테이블이 반대라고 생각하면 된다.
FULL JOIN
- 두 테이블 중에 하나의 기준을 두지 않고, 두 테이블의 값을 기준에 맞춰 모두 합친 조인이다. 하지만 FULL JOIN은 지원하지 않는 데이터베이스도 있으므로 확인하며 써야하며, UNION 함수를 사용해서 FULL JOIN같은 사용법을 써도 된다.
- 다른 OUTER JOIN과 마찬가지로 한쪽에만 존재하는 데이터같은 경우 다른 한쪽에서는 모두 NULL로 채운다.
CROSS JOIN
- cross join은 양 테이블의 모든 행을 합치는 join이다.
SELECT 테이블명.컬럼명, ... FROM 테이블명1
CROSS JOIN 테이블명2
ON 테이블명1.컬럼명1 = 테이블명2.컬럼명2;
위처럼 사용이 가능하지만, cross join은 조건 없이 사용하는 경우가 대부분이라 좀 더 간략하게
SELECT 테이블명.컬럼명, ... FROM 테이블명1 CROSS JOIN 테이블명2
이렇게도 사용이 가능하다.
'DataBase' 카테고리의 다른 글
[SQL] DDL 사용법 (1) | 2023.03.21 |
---|---|
[DB] SQL 구문 순서, 실행 순서 (0) | 2023.03.20 |
[SQL] Join (0) | 2023.03.20 |
[SQL] CASE WHEN THEN END (0) | 2023.03.20 |
[SQL] NULL 관련 함수 (0) | 2023.03.20 |