1. 조인 (Join, ⋈)
1) 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 튜플을 수평으로 결합하는 연산임.
2) 조인을 수행하기 위해서는 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로
구성되어야 함.
3) 조인 연산의 결과는 공통 속성 값이 동일한 튜플만 반환함.
4) 조인 연산 구분
- 기본연산
- Theta join (세타 조인 θ)
- 조인에 참여하는 두 릴레이션의 속성 값을 비교하여 조건을 만족하는 투플만 반환홤.
- 세타조인의 조건은 (=, <>, <=, >=) 중 하나가 됨
- Equi join (동등 조인)
- 세타조인에서 = 연산자를 사용한 조인을 말함.
- 내부조인(inner join)
- ex) 고객과 고객의 주문 사항을 모두 보이시오.
- 확장된 조인 연산 : 외부 조인 (outer join)
- 기본조인시 조인에 실패한 튜플을 모두 보여주되 값이 없는 대응 속성에는 NULL 값을
채워서 반환.
- 조인에 의해 사라진 정보를 보전하기 위한 조인 연산자의 확장 버전
- 조인 결과를 구한 후 한 릴레이션에서 제외된 모든 튜플을 조인 결과 릴레이션에 추가함.
- 왼쪽외부조인 (left outer join) : 왼쪽 릴레이션의 튜플을 추가
- 오른쪽 외부조인(right outer join) : 오른쪽 릴레이션의 튜플을 추가
- 완전 외부조인 (full outer join) : 모든 릴레이션의 튜플을 추가
2. Join이 필요한 이유
1) 필요한 정보(상품명, 유저 정보, 카테로기 정보 등)가 각기 다른 테이블에 분산 저장
되어 있을때, 이를 하나의 테이블로 가져와 보기좋게 데이터를 추출하기 위해서임.
2) join의 문법
select 컬럼명
from 테이블명 (as) a
join 테이블명2 (as) b on a.컬럼명 = b.컬럼명
3. join의 원리
1) 두 릴레이션의 속성 값을 비교하여 조건을 만족하지 않는 행이 삭제됨.
2) left outer join에서 왼쪽 릴레이션에서 해당 행이 그대로 남음.
단, 오른쪽 릴레이션에서는 아무 정보도 가져오지 못함.
4. join의 유형과 상황 내용 정리
유형 Inner Join Left Join Right Join Full Join
조인 두개 테이블에 모두 왼쪽 테이블을 기준으로 left join과 반대 모든 값이 합쳐짐
결과 존재하는 행만 남음 오른쪽 테이블을 붙힘
=>오른쪽 테이블에 조인되는
값이 없는 경우 null로 표기됨
필요상황 두개 테이블에 조인키가 한개 이상의 테이블에 조인시에
빠짐없이 있을 때 null값이 있거나,
(ex:주문테이블에 테이블1에 있는 값이 테이블2에는
상품 테이블을 조인하는 없을 때
경우) (ex: 주문테이블에
유저테이블을 조인하는 경우)
5. join 주의사항(가장 많이 하는 실수)
1) where절 실수 case
- "where" 문구가 맨앞에 오는지를 확인하자.
2) on절 실수 case
- on절에 =, >=, >, <, <=, BETWEEN 연산자가 있는지 반드시 확인하자.
6. join이 필요한 이유
1) 필요한 정보(상품명,유저 정보, 카테고리 정보)가 각기 다른 테이블에 분산 저장되어 있을때,
이를 하나의 테이블로 가져와 보기좋게 데이터를 추출하기 위해서임.
Web/Oracle SQL
7. 조인
728x90
반응형
728x90
반응형
댓글