본문 바로가기
Database

[Database] DDL(Data Definition Language)/ Join

by 구루미94 2022. 4. 19.

1. DDL

- Create DB

- Drop DB

- Backup DB

- Create Table

- Drop Table

- Alter Table

 

2. 조인

(1) 개념

- 여러 테이블을 합해서 큰 테이블로 만드는 연산

- 테이블이 여러 개로 나눠진 상태에서 원하는 데이터를 찾으려면 테이블을 합쳐서 필요한 데이터 검색

- 조인은 테이블 단위 연산

- 레코드를 합치는 것이 아님

- 표준조인에서는 조인 과정에서 각 테이블 간의 공통 컬럼이 있어야 함

- 공통컬럼을 외래키라고 함

 

(2) 특징

- 2개 이상의 테이블을 합쳐 큰 테이블을 만드는 데, 이때 외래키와 Nested-loop Join 방식 사용 (기본)

- 널 값의 허용 여부에 따라 내부조인(Inner Join)과 외부조인(Outer Join)으로 나뉨

 

(3) Inner Join

- 드라이빙(기준) 테이블/ 드리븐(기준이 아닌 애) 테이블의 널값을 허용하지 않음

- A(Driving Table) Join B(Driven Table)

- 널값을 제외하고 출력됨

 

(4) Outer Join

- Left: 드라이빙테이블의 레코드가 누락되면 안 됨

- Right: 드리븐 테이블의 레코드가 누락되면 안 됨

- Full Join: 양쪽 모두 누락되면 안 됨 (MySQL 지원X)

 

- union: 중복제거/ union all: 중복허용

 

(5) 예시

직원TB(Driving TB) join 부서TB(Driven TB)

① Inner 조인: 직원 중 부서가 없는 직원, 직원이 없는 부서는 누락시킴

② Left 조인: 직원 중 부서가 없는 직원은 누락시키지 않음 

③ Right 조인: 부서 중 직원이 없는 부서는 누락시키지 않음

④ Full 조인: 두 경우 모두 누락시키지 않음 (MySQL에서는 지원 x)

 

(6) 비표준조인

- Cartesian Product(cross join): 두 릴레이션을 그냥 곱해서 만들어진 조인의 형태

- Equi-Join(Theta Join): Cartesian Product를 통해 만들어진 릴레이션 중 실제 있는 것만 필터링한 조인

- Non-equi join: Equi-Join의 여집합

- Natural Join: 알아서 조인(컬럼을 지정하지 않음)

- Self Join: 동일한 테이블을 기준으로 조인/ 자기자신에게 Join (ex. 직원TB에 사수, 부사수 관계를 표시할 때 사용)

 

728x90

댓글