두 개 이상의 다른 테이블을 한 번에 보여줄때 쓰는 쿼리
EQUI JOIN과NOT EQUI JOIN를 하나의 쿼리에서 사용 할 수 있다.- 테이블간 PK와 FK의 연관 관계가 없어도 JOIN이 가능
JOIN되는 테이블 간 모두 존재하는 컬럼이 존재 하는 경우, 반드시 테이블명이나 AS를 명시해야 한다.
Equal= 조건으로 JOIN하는 것
WHERE절 내부에 = 조건 추가SELECT A.CODE, A.NAME, B.ID, B.REVIEW, B.DATE
FROM PRODUCT A, PRODUCT_REVIEW B
WHERE A.CODE = B.CODE
AND A.CODE = '~~~' ;
BETWEEN > < >= <= 조건을 이용하여 JOIN하는 것
JOIN조건에 충족하는 데이터만 출력되는 방식 교집합
ON절에 정의된 조건으로 JOIN의 여부를 결정한다.SELECT A.CODE, A.NAME, B.ID,B.CONTENT
FROM PRODUCT A INNER JOIN REVIEW B
ON A.CODE = B.CODE ;
JOIN조건을 만족하지 않은 행들도 출력하는 형태
기준이 되는 행은 항상 무조건 모두 출력된다!!!!
ON절에 정의된 조건으로 JOIN의 여부를 결정한다.(+) 기호를 붙여 작성한다.> LEFT JOIN의 경우
SELECT A.COL1 , B.COL2
FROM SAMPLE1 A, SAMPLE2 B
WHERE A.COL1 = B.COL2(+);
우변에 (+)를 붙인다
> RIGHT JOIN의 경우
SELECT A.COL1, B.COL2
FROM SAMPLE1 A, SAMPLE2 B
WHERE A.COL1(+) = B.COL2;
좌변에 (+)를 붙인다
왼쪽에 표기된 테이블 데이터는 무조건 출력되는 조인
LEFT OUTER JOIN
JOIN된 데이터가 없는 오른쪽 테이블은NULL출력
오른쪽에 표기된 테이블 데이터는 무조건 출력되는 조인
RIGHT OUTER JOIN
JOIN된 데이터가 없는 왼쪽 테이블은NULL출력
왼쪽, 오른쪽 데이터가 모두 출력되는 방식
FULL OUTER JOIN
중복값은 제거 후 출력
JOIN 되어 출력
- Oracle에서,
USING절을 이용하여 같은 이름을 가진 컬럼 중, 원하는 컬럼만 조인 가능
- 단,
SELECT절에서 ALIAS 표기 불가ON절 사용 불가!!
경우의 수 생각하기
JOIN조건이 없을 경우, 카디션 곱으로 취급SELECT A_NAME, B_NAME
FROM B,A ;
SELECT A_NAME, B_NAME
FROM B CROSS JOIN A ;
// 같은 결과