실무에서 SQL을 작성할 때 8할이 JOIN 쿼리라고 한다. (라고 한댄다…)
서로 다른 두 개의 집단을 합할 때 사용한다.
Equal(=) 조건으로 JOIN하는 것으로, 가장 흔히 볼 수 있는 JOIN의 방식이다.
SELECT A.PRODUCT_CODE,
A.PRODUCT_NAME,
B.MEMBER_ID,
B.CONTENT,
B.REG_DATE
FROM PRODUCT A,
PRODUCT_REVIEW B
WHERE A.PRODUCT_CODE = B.PRODUCT_CODE
AND A.PRODUCT_CODE = '100001';
# 출력값 : PRODUCT와 PRODUCT_REVIEW의 CODE가 일치하고 그 값이 100001인 데이터를 추출
Equal(=) 조건이 아닌 다른 조건(BETWEEN, >, >=, <, <=)으로 JOIN하는 방식이다.
SELECT A.EVENT_NAME,
B.MEMBER_ID,
B.CONTENT,
B.REG_DATE
FROM EVENT A,
PRODUCT_REVIEW B
WHERE B.REG_DATE BETWEEN A.START_DATE AND A.END_DATE;
# 출력값 : PRODUCT_REVIEW의 REG_DATE 값이 EVENT의 START_DATE와 END_DATE 사이의 값에 해당하는 데이터를 추출
방식은 동일하다.
SELECT A.PRODUCT_NAME,
B.MEMBER_ID,
B.CONTENT,
C.EVENT_NAME
FROM PRODUCT A,
PRODUCT_REVIEW B,
EVENT C
WHERE A.PRODUCT_CODE = B.PRODUCT_CODE # EQUI JOIN
AND B.REG_DATE BETWEEN C.START_DATE AND C.END_DATE; # NON EQUI JOIN

SELECT A.PRODUCT_CODE,
A.PRODUCT_NAME,
B.MEMBER_ID,
B.CONTENT,
B.REG_DATE
FROM PRODUCT A,
PRODUCT_REVIEW B,
WHERE A.PRODUCT_CODE = B.PRODUCT_CODE(+);
RDBMS마다 SQL문법 차이가 존재한다. 이를 해결하기 위해 표준이 되는 ANSI SQL을 지정하게 되었다. 즉, Oracle에서도 돌아가고 MySQL에서도 돌아가는 JOIN 쿼리이다.