INTERSECT키워드는 두 테이블 간에 공통된 행을 출력해 주는 키워드이다.
사용방법
SELECT TEAM_ID FROM PLAYER
INTERSECT
SELECT TEAM_ID FROM TEAM;
// 아래와 같은 결과 반환한다.
SELECT DISTINCT T.TEAM_ID
FROM TEAM T JOIN PLAYER P
ON T.TEAM_ID = P.TEAM_ID
ORDER BY T.TEAM_ID;
실행결과 : PLAYER와 TEAM에는 둘 다 15개의 팀이 존재하는데 중복되는 팀을 오름차순으로 정렬을 한 뒤 출력된다.
하지만 실행 계획을 보니 두 번째 쿼리와 같은 결과를 출력하지만 두 번째 쿼리가 더 좋은 성능을 가지는 것을 확인할 수 있다.
주의 사항 : INTERSECT 키워드를 사용할 때 만약 컬럼이 2개 이상이면 하나의 튜플을 기준으로 비교하기 때문에 하나의 컬럼이 같아도 나머지 컬럼이 다르면 다른 튜플이라고 판단한다. 따라서 데이터 타입, 컬럼의 순서, 개수 등이 맞아야 한다.
CROSS JOIN
CROSS JOIN은 조인 조건 없이 사용하며 두 개의 테이블을 조인 할 경우 카테시안 곱이 발생한다.
(카테시안 곱이란 테이블 1과 테이블 2를 조인할 경우 발생할 수 있는 최대의 카디널리티를 의미한다. 예를 들어 테이블 1의 카디너리티가 10이고 테이블 2의 카디널리티가 5이면 발생하는 카테시안 곱은 50이 된다.)
EX) SELECT * FROM TABLE1 CROSS JOIN TABLE2;
SELECT * FROM PLAYER; // 480개의 ROW
SELECT * FROM TEAM; // 15개의 ROW
SELECT * FROM PLAYER CROSS JOIN TEAM; // 총 7200개의 ROW
'데이터베이스' 카테고리의 다른 글
[데이터베이스] 오라클 RONUM (0) | 2023.07.04 |
---|---|
[데이터베이스] 오라클 WITH절 사용방법 (0) | 2023.07.03 |
[데이터베이스] DECODE(), CASE문 사용법 (0) | 2023.06.28 |
[데이터베이스] 중복 제거, NOLOGGING (0) | 2023.06.26 |
[데이터베이스] VIEW (0) | 2023.06.20 |