728x90
Join을 하는 이유?
제 3 정규화로 중복된 데이터를 따로 테이블로 두어 중복 방지하였지만, 제대로된 정보가 서로 다른 테이블에 있으니 Join을 수행한다..
예시) 한 사원의 부서명이 400이라면 그 의미를 알아내기 힘들 것이다. 사원 테이블과 부서 테이블을 Join하면 400 의미를 보여준다.


Cross, Natural
1. Cross Join
- 두 테이블간 Cross Join을 수행하면 두 테이블의 행수를 곱한 수를 반환한다.
두 테이블을 강제로 합체시켜 보여준다
select [table1]column, [table2]colmn
from table1 cross join table2;
2. Natural Join
- 사용자의 의도와 관계없이 두 테이블에 겹치는 칼럼이 있다면 모두 합쳐서 반환한다.
의도와 다르게 합쳐진 칼럼은 잘못된 결과를 낳을 수 있다.
select [table1]column, [table2]colmn
from table1 natural join table2;
칼럼이름이 같지만 자료형이 다르면 오류를 반환한다.
USING절을 사용한 Join
Join ~ USING 절을 사용하면 둘 이상의 열이 일치하는 테이블 간의 명시적으로 열을 지정하여 사용할 수 있고, 열 이름이 같지만 데이터 유형이 달라도 오류 없이 조인을 수행할 수 있다.
두 테이블간에 Join할 칼럼명이 똑같아야 한다.(다르면 접두어를 추가해야함)
select emp_id, emp_name, dept_id, dept_name
from y_emp Join y_dept
Using(dept_id);
y_emp테이블과 y_dept테이블의 dept_id칼럼 이름이 동일하기 때문에 Join 가능
On Join (Equi Join)
가장 많이 사용되는 Join 방법 중 하나이며 두 테이블에서 연관이 있는 데이터에 대하여 동등비교를 수행하고 기본키와 외래키 관계에 있는 두 테이블간에 자주 사용된다.
select t1.column, t2.column
from table1 t1(표현식) join table2 t2
on(t1.column = t2.column);

728x90
'SQL > oracle' 카테고리의 다른 글
| oracle SQL - 날짜 함수 (0) | 2023.03.28 |
|---|---|
| oracle SQL - DML 매우매우매우 기초 (insert, update, delete) (0) | 2022.12.08 |
| oracle SQL - 조건 표현식 (DECODE, CASE) (0) | 2022.12.07 |
| oracle SQL - 일반함수 (NVL, NVL2, NULLIF, COALESCE) (0) | 2022.12.07 |
| oracle SQL - 데이터 유형의 변환 (TO_CHAR) (0) | 2022.12.07 |