join
1. equi join (주로 이거씀)
- 2개의 테이블 간에 서로 정확하게 일치하는 경우를 활용하는 조인 즉, 등가 연산자를 사용한 조인을 의미 대부분 기본키-외래키 관계를 기반으로 발생하나, 모든 조인이 그런것은 아니다.
2. non equi join
- 2개의 테이블 간에 서로 정확하게 일치하지 않는 경우를 활용하는 조인 즉, 등가 연산자 이외의 연산자들을 사용한 join을 의미(>, >=, <, <=, between)
3. inner join (2개 테이블의 교집합)
- 내부 조인이라고 하며 join 조건에서 동일한 값이 있는 행만 반환한다. inner join은 join의 default값으로 inner이 생략 가능하다.
select * from 테이블이름 [inner]join 테이블 이름2
on 테이블1.컬럼명 = 테이블2.컬럼명; //조인조건임.
1) using 조건절
- alias 불가
- 같은 이름을 가진 컬럼들 중 원하는 컬럼에 대해서만 선택적으로 등가 조인 가능 SQL 서버는 X
select * from 테이블명 join 테이블명
using (기준칼럼이 될 이름);
2) natural join
- 거의 사용되지 않음, alias 불가
- 2개의 테이블 간 동일한 이름을 갖는 모든 칼럼들에 대해 등가조인을 수행
- join => natural join이라고 바꾸기만 하면 됨.
3) cross join == 카티션 프로덕트
cross join 또한 cross 생략 가능 그럼 cross join 과 inner join을 어떻게 구별할꺼냐? 라고 햇을 때
inner join은 on 절 아니면 using절이 반드시 붙는다. cross join은 아무것도 없다.
4) outer join
2개의 테이블 간에 교잡합을 조회하고 한쪽 테이블에만 있는 데이터도 포함시켜 조회 빈 곳은 NULL값으로 출력 where 조건절에 한쪽에만
있는 데이터를 포함시킬 테이블 쪽으로 (+) 위치
5) left join, right join
outer join과 같은 의미로 (+)를 어느 위치에 두냐에 따라 left join, right join이 된다.
(+)의 위치가 on절에 왼쪽에 있다면 left join 오른쪽에 있다면 right join이 된다.
6) full outer join == leftouter + union + rightouter
양 쪽에 (+)값이 붙은 것이라고 생각하면 됨. 서로 없는 값에 null값을 넣어서 출력.
4. self join
- 동일 테이블 사이의 조인으로 동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 모두 동일하기 때문에 식별을 위해 alias은 필수이다.