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 |