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