[CS : Database] Join

굼벵욤 ㅣ 2024. 2. 4. 09:00

Join

2개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법
(테이블을 연결하려면, 적어도 하나의 칼럼을 서로 공유하고 있어야 함.)

 

Inner Join(내부조인 → 교집합)

   : 공통적인 부분만 select

ID ENAME KNAME
1 AAA
2 BBB
SELECT A.ID, A.ENAME, A.KNAME
FROM A INNER JOIN B
ON A.ID = B.ID;

 

LEFT OUTER JOIN & RIGHT OUTER JOIN(부분집합)

   : Join 기준 왼쪽(오른쪽)에 있는 거 모두 select

    → 공통적인 부분 + 왼쪽(오른쪽에 있는)

ID ENAME KNAME
1 AAA
2 BBB
3 CCC NULL
SELECT A.ID, A.ENAME, A.KAME
FROM A LEFT OUTER JOIN B
ON A.ID = B.ID;

 

A - B 차집합 만들기

  : LEFT가 가지고 있는 것 중 공통적인 부분을 제외한 값 반환

ID ENAME KNAME
3 CCC NULL
SELECT A.ID, A.ENAME, A.KNAME
FROM A LEFT OUTER JOIN B
ON A.ID = B.ID
WHERE B.ID IS NULL;

 

Full Outer Join(외부조인 → 합집합)

   : A + B 값 반환함.

ID ENAME KNAME
1 AAA
2 BBB
3 CCC NULL
4 NULL
5 NULL

 

※ 두 테이블의 교집합은 제외한 값 반환

ID ENAME KNAME
3 CCC NULL
4 NULL
5 NULL
SELECT A.ID, A.ENAME, A.KNAME
FROM A FULL OUTER JOIN B
ON A.ID = B.ID
WHERE A.ID IS NULL OR B.ID IS NULL;

 

✅ CROSS JOIN

   : 두 개의 테이블의 Catesian Product 연산 결과를 반환

    → 반환 가능한 모든 경우의 수를 반환함.

// [1]
SELECT 테이블명.컬럼명, ... FROM 테이블명1
  CROSS JOIN 테이블명2
  ON 테이블명1.컬럼명1 = 테이블명2.컬럼명2;

// [2] 단순화
SELECT (조회 컬럼) FROM 테이블명1
  CROSS JOIN 테이블명2 ON (조인 조건);

 

✅ SELF JOIN

   : 동일 테이블 사이의 조인

    • 동일 테이블 사이의 조인을 수행하면 테이블과 컬럼 이름이 모두 동일

      → 식별을 위해 반드시 테이블 별칭(Alias) 사용해야 함.

    • 자신이 갖고 있는 칼럼을 다양하게 변형시켜 활용할 때 사용함.

SELECT ALIAS명1.컬럼명
       , ALIAS명2.컬럼명
  FROM 테이블1 ALIAS명1, 테이블2 ALIAS명2
 WEHRE ALIAS명1.컬럼명2 = ALIAS명2.컬럼명1;

 

반응형

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

[CS : Database] 정규화  (0) 2024.02.18
[CS : Database] 인덱스(Index)  (0) 2024.02.16
[CS : Database] 이상(Anomaly)  (0) 2024.02.15
[CS : Database] NoSQL(비관계형 데이터베이스)  (0) 2024.02.14
[CS : Database] Key  (0) 2024.01.30