본문 바로가기

자격증/SQLD

[SQLD][아이리포]16. 관계형 데이터베이스 | SQL 함수 | 조인 | JOIN | INNER JOIN | OUTER JOIN | CROSS JOIN

반응형
목차

3. 관계형 데이터베이스
3-6. 조인
3-6-1. JOIN
3-6-2. EQUI JOIN
3-6-3. Non EQUI JOIN
3-6-4. INNER JOIN
3-6-5. OUTER JOIN
3-6-6. NATURAL JOIN
3-6-7. CROSS JOIN

3. 관계형 데이터베이스

3-6. 조인

1️⃣ JOIN

JOIN은 둘 이상의 테이블을 공통된 컬럼을 기준으로 하나의 결과로 조회하는 연산입니다.

 

관계형 데이터베이스에서는 데이터의 중복을 줄이기 위해 정보를 여러 테이블에 나누어 저장하므로, 필요한 데이터를 조회할 때 JOIN을 자주 사용합니다.

 

✔️ JOIN의 특징

- 두 개 이상의 테이블을 하나의 결과로 조회한다.

- 공통된 컬럼을 기준으로 데이터를 연결한다.

- 관계형 데이터베이스에서 가장 많이 사용하는 연산 중 하나이다.

2️⃣ EQUI JOIN

EQUI JOIN은 두 테이블의 컬럼 값이 서로 같은 경우에만 데이터를 연결하는 조인입니다.

 

가장 많이 사용하는 JOIN 방식이며, 등호( = ) 를 조건으로 사용합니다.

 

✔️ EQUI JOIN의 특징

- = (등호)를 이용하여 조인한다.

- 컬럼 값이 서로 같은 데이터만 조회한다.

- 가장 일반적으로 사용하는 JOIN 방식이다.

3️⃣ Non EQUI JOIN

Non EQUI JOIN은 등호( = )가 아닌 비교 연산자를 사용하여 데이터를 연결하는 조인입니다.

 

주로 범위 조건을 이용하여 데이터를 조회할 때 사용합니다.

 

✔️ EQUI JOIN의 특징

- <, >, <=, >-, BETWEEN 등을 사용한다.

- 범위를 기준으로 데이터를 연결한다.

- 값이 정확히 같은 경우가 아닌 조건에서도 조인이 가능하다.

4️⃣ INNER JOIN

INNER JOIN은 두 테이블에서 조인 조건을 만족하는 데이터만 조회하는 조인입니다.

 

집합으로 표현하면 교집합 (∩)과 같은 개념입니다.

 

✔️ INNER JOIN의 특징

- 조건을 만족하는 데이터만 조회한다.

- 두 테이블에 모두 존재하는 데이터만 반환한다.

- 가장 많이 사용하는 JOIN 방식이다.

 

✔️ 기본 사용법

SELECT A.컬럼명, B.컬럼명
FROM 테이블명1 A
INNER JOIN 테이블명2 B
        ON A컬럼명 = B.컬럼명;

 

🔹 예시

SELECT A1.ACTOR_NO ACT_NO1
       ,A2.ACTOR_NO ACT_NO2
       ,A2.MOVIE_NO
       ,A1.NAME
       ,A1.GENDER
FROM ACTOR A1
INNER JOIN APPR A2
        ON A1.ACTOR_NO = A2.ACTOR_NO;

 실행결과

5️⃣ OUTER JOIN

OUTER JOIN은 조인 조건을 만족하지 않는 데이터도 함께 조회하는 조인입니다.

 

집합으로 표현하면 합집합 (U) 과 같은 개념입니다.

 

- 합집합의 개념으로 기준이 되는 키에 따른 컬럼값이 존재하지 않더라도 모든 튜플을 병합

- LEFT OUTER JOIN : 왼쪽 테이블의 모든 행을 포함시키면서 조인

- RIGHT OUTER JOIN : 오른쪽 테이블의 모든 행을 포함시키면서 조인

- FULL OUTER JOIN : 양쪽 테이블의 모든 행을 포함시키면서 조인

- 비어 있는 값은 NULL로 표현됨

 

✔️ OUTER JOIN의 특징

- LEFT OUTER JOIN : 왼쪽 테이블의 모든 행을 조회한다.

- RIGHT OUTER JOIN : 오른쪽 테이블의 모든 행을 조회한다.

- FULL OUTER JOIN : 양쪽 테이블의 모든 행을 조회한다.

- 조인되지 않은 컬럼은 NULL 로 표시된다.

 

📌 LEFT / RIGHT / FULL 의 차이를 자주 물으니 반드시 알아두어야 합니다.


✔️
 기본 사용법

SELECT A1.컬럼명
       ,A2.컬럼명
FROM 테이블 A1
LEFT OUTER JOIN 테이블 A2
             ON A1.컬럼명 = A2.컬럼명;


🔹 예시

SELECT A1.ACTOR_NO ACT_NO1
      ,A2.ACTOR_NO ACT_NO2
      ,A2.MOVIE_NO
      ,A1.NAME
      ,A1.GENDER
FROM ACTOR A1
LEFT OUTER JOIN APPR A2
        ON A1.ACTOR_NO = A2.ACTOR_NO;


 실행결과

6️⃣ NATURAL JOIN

NATURAL JOIN은 이름이 같은 컬럼을 자동으로 찾아 조인하는 방식입니다.

 

동일한 이름의 컬럼을 기준으로 자동으로 조인이 수행되므로 ON 절을 작성하지 않습니다.

 

✔️ NATURAL JOIN의 특징

- 동일한 이름의 컬럼을 기준으로 자동 조인한다.

- ON 절을 사용할 수 없다.

- 동일한 컬럼은 한 번만 출력된다.


✔️
 기본 사용법

SELECT * 
FROM 테이블명 
NATURAL JOIN APPR;

 

🔹 예시

SELECT * 
FROM ACTOR 
NATURAL JOIN APPR;


 실행결과

 

 7️⃣ CROSS JOIN

CROSS JOIN은 두 테이블의 모든 행을 서로 조합하여 결과를 반환하는 조인입니다.

 

이를 카테시안 곱(Cartesian Product) 이라고도 합니다.

 

✔️ CROSS JOIN의 특징

- 모든 행을 서로 조합한다.

- 조인 조건이 필요하지 않다.

- 왼쪽 테이블이 M행, 오른쪽 테이블이 N행이면 결과는 M * N 행이 된다.

 

✔️ 기본 사용법

SELECT A1.컬럼명, A2.컬럼명
FROM 테이블명 A1, 테이블명 A2

 

SELECT A1.컬럼명, A2.컬럼명
FROM 테이블명 A1 CROSS JOIN 테이블명 A2


🔹 예시

SELECT S1.NAME, C1.NAME
FROM STUDENT S1, CLUB C1;

 

SELECT S1.NAME, C1.NAME
FROM STUDENT S1 CROSS JOIN CLUB C1;


 실행결과

 

📌 요약정리

- EQUI JOIN은 = 조건을 사용한다.

- Non EQUI JOIN은 <. >, BETWEEN 등을 사용한다./

- INNER JOIN은 교집합니다.

- OUTER JOIN은 조건을 만족하지 않는 데이터도 조회할 수 있다.

- NATURAL JOIN은 ON절을 사용하지 않는다.

- CROSS JOIN의 결과 건수는 M * N 이다.


🔗 출처

[SQLD 모든 것]

반응형