SQL join

강정우·2022년 7월 17일
0

DB

목록 보기
7/30
post-thumbnail

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이 된다.

  • 일반적으로 left 조인을 쓴다.

6) full outer join == leftouter + union + rightouter

양 쪽에 (+)값이 붙은 것이라고 생각하면 됨. 서로 없는 값에 null값을 넣어서 출력.

4. self join

  • 동일 테이블 사이의 조인으로 동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 모두 동일하기 때문에 식별을 위해 alias은 필수이다.
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글