: 2개 이상의 테이블을 특정 조건하에 결합하여 하나의 새로운 테이블을 반환
join
을 많이 사용Source : https://theartofpostgresql.com/blog/2019-09-sql-joins/
: 2개의 테이블을 특정 조건하에 하나로 결합하되, 조건에 만족하는 튜플만 반환
JOIN 조건 : 테이블1.속성 =
테이블2.속성
-- JOIN 조건 표기법 1: JOIN ~ ON 절 사용
SELECT {테이블명.}[속성명], ...
FROM [테이블1] JOIN [테이블2]
ON [테이블1].[속성명] = [테이블2].[속성명], ...
WHERE [조건];
-- JOIN 조건 표기법 2: Where절 사용
SELECT {테이블명.}[속성명], ...
FROM [테이블1], [테이블2]
WHERE [테이블1].[속성명] = [테이블2].[속성명], ...;
-- JOIN 조건 표기법 3 : JOIN ~ USING 절 사용
SELECT {테이블명.}[속성명], ...
FROM [테이블1] JOIN [테이블2]
USING (공통속성);
💡 CROSS JOIN
: 조인하는 두 테이블에 있는 튜플들의 순서쌍을 결과로 반환
❕ 반환되는 행 수 = 테이블 1의 행 수 X 테이블 2의 행 수
❕ Syntax : SELECT field, ... FROM table1 CROSS JOIN table2;
❕ Inner JOIN에서 조건이 없는 경우도 CROSS JOIN에 해당됨
💡 동일한 테이블을 alias를 달리해서 자기 자신과 조인한다면, SELF JOIN
>
, <
, <>
, ≥
, ≤
테이블2.속성SELECT {테이블명.}[속성명], ...
FROM [테이블명1], [테이블명2]
WHERE [테이블1].[속성명] [ > | < | <> | >= | <= ] [테이블2].[속성명], ...;
SELECT {테이블명.}[속성명], ...
FROM [테이블1] NATURAL JOIN [테이블2];
: 2개의 테이블을 특정 조건하에 하나로 결합하되, 조건에 만족하지 않는 튜플도 결과로 반환
-- JOIN 조건 표기법 1 : JOIN ~ ON절 사용
SELECT {테이블명.}[속성명], ...
FROM [테이블1] LEFT OUTER JOIN [테이블2]
ON [테이블1][속성명] = [테이블2][속성명];
-- JOIN 조건 표기법 2 : Where절 사용
SELECT {테이블명.}[속성명], ...
FROM [테이블1], [테이블2]
WHERE [테이블1][속성명] = [테이블2][속성명](+);
오른쪽 테이블의 모든 튜플들을 리턴함
- 오른쪽 테이블의 튜플들 중 왼쪽 테이블의 튜플과 조건이 맞지 않는 튜플이 있다면, 왼쪽 테이블의 값들을 NULL로 채우고 리턴함
-- JOIN 조건 표기법 1 : JOIN ~ ON절 사용
SELECT {테이블명.}[속성명], ...
FROM [테이블1] RIGHT OUTER JOIN [테이블2]
ON [테이블1][속성명] = [테이블2][속성명];
-- JOIN 조건 표기법 2 : Where절 사용
SELECT {테이블명.}[속성명], ...
FROM [테이블1], [테이블2]
WHERE [테이블1][속성명](+) = [테이블2][속성명];
UNION | UNION ALL
RIGHT OUTER JOINMySQL은 FULL JOIN을 지원하지 않는다.
SELECT {테이블명.}[속성명], ...
FROM [테이블1] FULL OUTER JOIN [테이블2]
ON [테이블1][속성명] = [테이블2][속성명];