CS/SQL

Join

lovelyunsh 2024. 5. 27. 21:09

Join 이란

  • 2개 이상의 table에 있는 데이터를 한 번에 조회 하는 것

  • implicit join : 옛날 방식 where 조건으로 join 조건도 같이 명시
  • where에 조건이 혼동 되어 있어서 가독성이 별로임
  • where에 join 조건 있으면 inner join 없으면 cross join

  • explicit join : 가독성을 위해 바뀐 방식
  • join 키워드를 명시

Join 종류

 

  • inner join은 매칭이 된 것만 가져온다. ⇒ null은 무시

 

  • left (outer) join 은 매칭이 안되더라도 왼쪽 테이블의 모든 튜플을 가져온다. right는 반대로
  • mysql에서는 full outer join 지원 X

equi 조인

  • 조인 컨디션에 =을 사용한 join을 equi 조인이라고 한다.
  • equi 조인 에서 같은 dept_id가 두 번 나온다.

  • 같은 거 2번 나오는 거 없애기 위해 USING 키워드를 쓸 수 있다.
  • 그럼 result가 조건 attribute가 앞으로 간다.

  • natural join = 따로 조건을 주지 않는 Join
  • 두 테이블에서 같은 이름의 attribute로 equi join을 알아서 해줌.
  • 근데 name 같이 테이블 별로 의미하는 바가 다른 attribute에 equi join의 조건으로 쓰이게 되니깐 별로..?

cross join

  • cross join : 두 테이블의 tuple로 만들 수 있는 모든 조합을 만든다.
  • +) 카테시안 곱을 ansi에서 표준 join으로 만든게 cross join
  • 근데 mysql은 cross join = inner join = join 처럼 쓰임.
  • cross join은 on이 있으면 안되는데 만약 있으면 inner join처럼 동작
  • inner join은 on이 있어야만 하는데 만약 없으면 cross join처럼 동작

 

위 글은 쉬운코드님의 데이터베이스 영상을 토대로 정리한 내용입니다.

https://www.youtube.com/watch?v=aL0XXc1yGPs&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=1