카테시안 곱은 두개의 테이블(or 데이터 집합) 간에 모든 가능한 조합을 생성하는 연산법입니다.
즉 A 테이블의 각 행과 B 테이블의 각 행을 결합하여 결과 테이블을 생성합니다.
CROSS JOIN 과 카테시안 곱은 같은 개념과 뜻으로 불립니다.
사용법은 다음과 같습니다.
테이블1:
| 컬럼1 |
|-------|
| A |
| B |
테이블2:
| 컬럼2 |
|-------|
| 1 |
| 2 |
SELECT * FROM 테이블1
CROSS JOIN 테이블2;
| 컬럼1 | 컬럼2 |
|-------|-------|
| A | 1 |
| A | 2 |
| B | 1 |
| B | 2 |
결과는 위와 같이 나오게 됩니다.
카테시안 곱을 표현하는 다른 방법 중 하나는 INNER JOIN
또는 OUTER JOIN
을 사용하여 조인 조건을 생략하는 것입니다. 이렇게 하면 두 테이블 간의 모든 가능한 조합이 생성됩니다.
테이블1:
| 컬럼1 |
|-------|
| A |
| B |
테이블2:
| 컬럼2 |
|-------|
| 1 |
| 2 |
SELECT *
FROM 테이블1
INNER JOIN 테이블2;
| 컬럼1 | 컬럼2 |
|-------|-------|
| A | 1 |
| A | 2 |
| B | 1 |
| B | 2 |
INNER JOIN
외에도 LEFT JOIN
, RIGHT JOIN
, 또는 FULL OUTER JOIN
을 사용하여
다른 유형의 조인을 수행하면 카테시안 곱과 유사한 결과를 얻을 수 있지만 완전히 같지는 않습니다.
테이블1:
| 컬럼1 | 값1 |
|-------|-----|
| A | 10 |
| B | 20 |
테이블2:
| 컬럼2 | 값2 |
|-------|-----|
| A | 30 |
| C | 40 |
SELECT *
FROM 테이블1
LEFT JOIN 테이블2 ON 테이블1.컬럼1 = 테이블2.컬럼2;
| 컬럼1 | 값1 | 컬럼2 | 값2 |
|-------|-----|-------|-----|
| A | 10 | A | 30 |
| B | 20 | NULL | NULL |
LEFT JOIN
은 테이블1
을 기준으로 하고 테이블2
의 일치하는 행을 가져오며, 일치하지 않는 경우에는 NULL 값을 반환합니다.
이런 유형의 JOIN은 모든 가능한 조합을 검토해야 하는 경우에 유용할 수 있습니다. 하지만 대부분의 실제 상황에서는 더 구체적인 JOIN 조건이 필요하기 때문에, CROSS JOIN은 그다지 자주 사용되지 않습니다.