[SQL] 조인
조인이란?
- 2개 이상의 테이블을 조인하여 원하는 결과를 출력
INNER JOIN
,NATURAL JOIN
,USING
,ON
LEFT OUTER JOIN
,RIGHT OUTER JOIN
,FULL OUTER JOIN
CROSS JOIN
내부조인
INNER JOIN
- 테이블 조인 시 조인 조건에 대해 동일한 값이 있는 행 리턴
- 조인 조건을 기준으로 정확히 매칭되는 집합만을 결과집합으로 리턴
WHERE 테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명
NATURAL JOIN
- 조인하는 2개의 테이블에서 동일한 이름의 칼럼명이 존재하는 경우 자동으로 동일한 칼럼을 기준으로 조인되어
INNER JOIN
과 동일한 결과집합 출력FROM 테이블명 [앨리어스 명] NATURAL JOIN 테이블명 [앨리어스 명]
NATURAL JOIN
에서 조인 대상 칼럼에는 앨리어스 사용할 수 없다.
NATURAL JOIN
을INNER JOIN
으로 변환WHERE 테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명
NATURAL JOIN
을INNER JOIN
으로 변환하면 조인 대상 칼럼에 앨리어스 사용 가능
USING
- 조인 칼럼을 지정하고 싶은 경우
USING
절을 이용하면 같은 이름을 가진 칼럼들 중 원하는 칼럼에 대해서만 선택적 조인 가능 - 결과집합은
INNER JOIN
과 결과 동일 USING
절에 기재하는 조인 칼럼에는 앨리어스 사용 불가FROM 테이블명 [앨리어스 명] JOIN 테이블명 [앨리어스 명] USING (원하는 칼럼명)
ON
- 여러 개의 칼럼에 대한 조인 조건 기재 가능
- 조인하는 칼럼의 이름이 서로 달라고 조인 수행
- 동일한 칼럼명을 기재할 경우 반드시 앨리어스 사용
FROM 테이블명 [앨리어스 명] INNER JOIN 테이블명 [앨리어스 명] ON (테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명)
외부조인 (OUTER JOIN
)
LEFT OUTER JOIN
- 왼쪽에 기재한 테이블이 OUTER 집합이 되고 오른쪽에 기재한 테이블이 INNER 집합
- 왼쪽 OUTER 는 다 나오지만 오른쪽 INNER 는 매칭되는 데이터만 보여줌
FROM 테이블명 [앨리어스 명], 테이블명 [앨리어스 명] WHERE 테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명(+)
FROM 테이블명 [앨리어스 명] LEFT OUTER JOIN 테이블명 [앨리어스 명] ON (테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명)
RIGHT OUTER JOIN
- 오른에 기재한 테이블이 OUTER 집합이 되고 왼쪽에 기재한 테이블이 INNER 집합
- 오른쪽 OUTER 는 다 나오지만 왼쪽 INNER 는 매칭되는 데이터만 보여줌
FROM 테이블명 [앨리어스 명], 테이블명 [앨리어스 명] WHERE 테이블[의 앨리어스명].칼럼명(+) = 테이블[의 앨리어스명].칼럼명
FROM 테이블명 [앨리어스 명] RIGHT OUTER JOIN 테이블명 [앨리어스 명] ON (테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명)
FULL OUTER JOIN
INNER JOIN
으로 매칭되는 집합,LEFT OUTER JOIN
의 집합,RIGHT OUTER JOIN
의 집합 모두 출력FROM 테이블명 [앨리어스 명] FULL OUTER JOIN 테이블명 [앨리어스 명] ON (테이블[의 앨리어스명].칼럼명 = 테이블[의 앨리어스명].칼럼명)
교차조인(CROSS JOIN
)
- 2개의 테이블을
FROM
절에 기재 후 아무런 조인 조건도 기재하지 않을 때 발생하는 조인 (곱집합) - 두 테이블 데이터 수의 곱으로 연산된 데이터의 수가 출력
FROM 테이블명 [앨리어스 명] CROSS JOIN 테이블명 [앨리어스 명]
- 특정 테이블의 데이터를 복제할 때 많이 사용
댓글남기기