조인 (JOIN)
관계형 데이터베이스(RDBMS)에서는 중복 데이터를 피하기 위해서, 데이터를 여러 데이터를 여러 테이블로 나누어 저장한다.
반대로 이러한 데이터베이스에서 원하는 결과를 도출하기 위해 테이블을 조합하게 된다.
관계형 데이터베이스에서는 조인(JOIN) 연산을 사용해, 두 개 이상의 테이블을 합쳐 SELECT 한다.
JOIN의 종류
•
INNER JOIN
•
OUTER JOIN
◦
LEFT OUTER JOIN
◦
RIGHT OUTER JOIN
◦
FULL OUTER JOIN
•
CROSS JOIN
•
SELF JOIN
INNER JOIN
•
교집합의 개념
•
JOIN의 정류를 별도로 지정해주지 않았을 경우 INNER JOIN이 Default로 사용된다.
•
기준 테이블과 JOIN 테이블의 중복된 값을 보여준다. (지정한 열의 데이터가 두 테이블에 모두 존재할 때 JOIN)
SELECT
A.NAME, B.AGE
FROM EX_TABLE A
INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
SQL
복사
LEFT OUTER JOIN
•
왼쪽 테이블 기준으로 JOIN
•
기준 테이블의 모든 값이 출력되고, 조인 테이블에만 존재하는 값으 출력되지 않는다.
•
기준 테이블에는 존재하는데, 조인 테이블에는 존재하지 않는 데이터의 경우, 조인 테이블의 속성 값이 NULL이 된다.
SELECT
A.NAME, B.AGE
FROM EX_TABLE A
LEFT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP
SQL
복사
RIGHT OUTER JOIN
•
LEFT OUTER JOIN과 동일한 동작
•
오른쪽 테이블을 기준으로 JOIN 된다.
SELECT
A.NAME, B.AGE
FROM EX_TABLE A
RIGHT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMPT
SQL
복사
CROSS JOIN
•
두 테이블의 모든 행을 조인시켜, 모든 경우의 수를 전부 표현해주는 방식
•
CROSS JOIN의 결과는 두 테이블의 행의 개수의 곱 만큼의 데이터를 갖는다.
•
카티션 곱 (CARTESIAN PRODUCT)라고도 한다.
→ Table A의 행이 3개, B가 4개이면, 총 3 * 4 = 12개의 데이터가 검색된다.
SELECT
A.NAME, B.AGE
FROM EX_TABLE A
CROSS JOIN JOIN_TABLE B
SQL
복사
SELF JOIN
•
1개의 테이블을 사용하여 자기자신과 조인하는 것이다.
•
자신이 갖고 있는 컬럼을 다양하게 변형시켜 활용할 때, 자주 사용
•
별도의 SELF JOIN 연산이 있는 것이 아니라, INNER JOIN, OUTER JOIN 등에서 두 대상을 자기 자신으로 조인하는 경우가 SELF JOIN이 된다.
SELECT
A.NAME, B.AGE
FROM EX_TABLE A, EX_TABLE B
SQL
복사