Search
Duplicate

조인 (JOIN)

생성일
2023/02/21 08:03
태그
DB

조인 (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
복사

ref)