[MySQL] JOIN

1. 조인 (JOIN) 이란

두 릴레이션으로부터 “조인 조건”에 맞는 튜플을 결합하여 하나의 튜플로 생성하는 것이다.

크게 내부조인외부조인 으로 분류된다.

1) 카티션 프로덕트 (Cartesian Product)

두 릴레이션의 튜플들의 모든 조합을 출력한다. 만약 A 릴레이션에 8개, B 릴레이션에 3개의 튜플이 있다면 A와 B를 카티션 프로덕트한 결과는 24개의 튜플이 된다.

SELECT * from A, B;

2) 내부조인 (INNER JOIN)

조인이 되는 키값을 기준으로 NULL을 제외한 교집합을 추출한다. 동등조인(EQUI JOIN), 자연조인(NATURAL JOIN), 셀프조인(SELF JOIN) 등이 있으며, 동등조인이 일반적으로 사용된다.

동등조인 (EQUI JOIN)

두 릴레이션을 카티션 프로덕트한 결과 중 조건에 맞는 튜플을 추출한다.

#암시적 표현
SELECT *
FROM   EMPLOYEE, DEPARTMENT
WHERE  DNUMBER=DNO;

#명시적 표현
SELECT		*
FROM 		EMPLOYEE
INNER JOIN  DEPARTMENT
ON 			EMPLOYEE.DNO = DEPARTMENT.DNUMBER;

자연조인 (NATURAL JOIN)

두 릴레이션이 동일한 타입과 이름을 가진 속성이 있다면, 이를 이용해 조인을 간단히 표현할 수 있다.

#동등조인 사용
SELECT *
FROM   DEPARTMENT AS D, DEPT_LOCATIONS AS DP
WHERE  D.DNUMBER = DP.DNUMBER;

#자연조인 사용
SELECT 		  * 
FROM 		  DEPARTMENT
NATURAL JOIN  DEPT_LOCATIONS;

3) 외부조인 (OUTER JOIN)

조인이 되는 키값을 기준으로 NULL을 포함한 기준테이블 튜플을 출력한다. LEFT JOIN, RIGHT JOIN, FULL JOIN 으로 나뉜다.

LEFT OUTER JOIN

결과에 왼쪽 테이블의 모든 튜플이 출력된다. 만약, 오른쪽 테이블에 매칭되는 튜플이 없다면 NULL값이 들어간다.

image

SELECT 			*
FROM 			A
LEFT OUTER JOIN B
ON				A.VALUE = B.VALUE;

NULL인 부분을 제외하고 싶다면 WHERE 절을 추가하면 된다.

SELECT 			*
FROM 			A
LEFT OUTER JOIN B
ON				A.VALUE = B.VALUE
WHERE			B.VALUE IS NULL;

RIGHT OUTER JOIN

결과에 오른쪽 테이블의 모든 튜플이 출력된다. 만약, 왼쪽 테이블에 매칭되는 튜플이 없다면 NULL값이 들어간다.

image-20210816160717316

SELECT 			 *
FROM 			 A
RIGHT OUTER JOIN B
ON				 A.VALUE = B.VALUE;

NULL인 부분을 제외하고 싶다면 WHERE 절을 추가하면 된다.

SELECT 			 *
FROM 			 A
RIGHT OUTER JOIN B
ON				 A.VALUE = B.VALUE
WHERE			 A.VALUE IS NULL;

카테고리:

업데이트:

댓글남기기