728x90
반응형
A 테이블의 데이터 221개
B 테이블의 데이터 101개
중복 데이터 100개
라고 가정하겠다.
SELECT count(*)
FROM A, B
-- count(*) = 22,321
FROM 절에 두개의 테이블을 아무조건없이 명시하면 221*101 이 이루어진다.
만약 테이블이 3개라면 A * B * C 가 되어 무수히 많은 데이터가 만들어진다.
SELECT count(*)
FROM A, B
WHERE A.pk=B.pk;
-- count(*) = 100
SELECT count(*)
FROM A JOIN B ON A.pk=B.pk;
SELECT count(*)
FROM A INNER JOIN B ON A.pk=B.pk;
WHERE 절에 조건을 주면 A와 B의 교집합, 즉 같은 값만 가져오고
표준 ANSI 문법으로 JOIN 하면 동일한 결과를 가져온다.
SELECT count(*)
FROM A, B
WHERE A.pk=B.pk(+);
-- count(*) = 221
SELECT count(*)
FROM A LEFT JOIN B ON A.pk=B.pk
LEFT JOIN은 교집합 되어있는 테이블에 A데이터를 가져온다.
SELECT count(*)
FROM A, B
WHERE A.pk(+)=B.pk;
-- count(*) = 101
SELECT count(*)
FROM A RIGHT JOIN B ON A.pk=B.pk
RIGHT JOIN은 되어있는 테이블에 B데이터를 가져온다.
LEFT는 오른쪽에 (+), RIGHT는 왼쪽에 (+)
반대로 생각하면 쉽다.
728x90
반응형
'개발 > ORACLE' 카테고리의 다른 글
Oracle Explain Plan Operation (0) | 2024.08.02 |
---|---|
Oracle 튜닝 - 실행 계획 (0) | 2024.08.02 |
Oracle install 19c (0) | 2024.05.16 |
Oracle의 V$RESOURCE_LIMIT과 process / session (0) | 2024.05.07 |
Oracle 에서 explain plan 쿼리 계획 (0) | 2024.05.02 |