CROSS JOIN은 두 테이블의 ROW간 가능한 모든 조합을 결과로 반환하며,

이러한 CROSS JOIN의 특징을 '카티션의 곱'이라고도 합니다.

 

 


 

간단한 CROSS JOIN의 예시 코드입니다.

 

employees 테이블과 departments 테이블을 CROSS JOIN합니다.

 

SELECT
    COUNT(*)
FROM
    employees;

SELECT
    COUNT(*)
FROM
    departments;

 

먼저 각 테이블의 Row를 COUNT( * )로 조회합니다.

 

SQL

 

 

CROSS JOIN에 대한 간단한 쿼리입니다.

 

-- Oracle JOIN --

SELECT
    *
FROM
    employees,
    departments;
    

-- Ansi JOIN --

SELECT
    *
FROM
    employees CROSS JOIN departments;

 

 

 

결과는 두 테이블 Row들의 카티션의 곱즉, 107 * 27 = 2889개입니다.

 

SQL

 

만약 결과가 뜨지 않는다면 VScode의 Oracle Developer Setting에서 Max Row를 높여주시면 됩니다.

일반적으로 500개로 제한되어 있습니다.

 

 

 

 

 

 

 

 

 

'Database > SQL' 카테고리의 다른 글

그룹화  (0) 2023.08.17
인라인 뷰  (0) 2023.08.17
외래 키  (1) 2023.08.16
데이터 사전  (0) 2023.08.16
동등 조인  (0) 2023.07.26

 

 

 

EQUI JOIN은 두 개 이상의 테이블에서 같은 값이 있는 행을 합치는 방식입니다.

 

 


 

EQUI는 "equal"의 줄임말로 "같다"라는 뜻을 가지고 있습니다.

즉, EQUI JOIN은 공통의 칼럼에서 값이 "같은" 행을 결합한다는 뜻입니다.

 

다음은 EQUI JOIN에 대한 간단한 SQL 쿼리입니다.

 

-- Oracle JOIN --

SELECT
    employee_id,
    department_name
FROM
    employees t1,
    departments t2
WHERE
    t1.department_id = t2.department_id;


-- Ansi JOIN --

SELECT
    employee_id,
    department_name
FROM
    employees t1 INNER JOIN departments t2
    ON t1.department_id = t2.department_id;

 

 

 

Oracle은 두 테이블을 결합하고 WHERE절에서 체크조건으로 필터링합니다.

Ansi는 INNER JOIN으로 두 테이블을 결합하고 ON절로 필터링합니다.

 

 

저는 개인적으로 Oracle 문법이 직관적이어서 특별한 환경이 아니라면 Oracle 문법을 사용합니다.

 

 

 

'Database > SQL' 카테고리의 다른 글

그룹화  (0) 2023.08.17
인라인 뷰  (0) 2023.08.17
외래 키  (1) 2023.08.16
데이터 사전  (0) 2023.08.16
크로스 조인  (0) 2023.08.10

+ Recent posts