Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Git
- codecov
- stateful
- permutations
- ws
- Python
- postreSQL
- 백준
- utils
- Query
- TDD
- Unit Testing
- SQL
- pytest
- Bruteforce
- dictionary
- stateless
- AWS
- ORM
- Gunicorn
- Q objects
- Django
- combinations
- Stack
- was
- Programmers
- HTTP 완벽 가이드
- greedy
- algorithm
- stack&que
Archives
- Today
- Total
해피 코딩!
[SQL] JOIN 본문
프로그래머스 레벨 3에 해당하는 SQL 문제를 풀이하기 위해 SQL의 Join 개념 및
Inner Join, Outer Join, Cross Join, Self Join 에 대해서 정리합니다.
1. JOIN 이란?
- 두 개 이상의 테이블을 결합하여 나타낼 때 사용하는 질의문 입니다.
- 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만들어 내는 과정입니다.
- 조인의 가장 기본은 교집합을 만들어 내는 것 입니다.
2. INNER JOIN
- INNER JOIN은 ON 구를 사용해서 테이블을 연결한다.
- 결합하고자 하는 테이블들의 공통 컬럼을 사용하여 INNER JOIN을 수행한다.
사용 예제
select animal_outs.animal_id, animal_outs.name
from animal_ins, animal_outs
where (animal_ins.animal_id = animal_outs.animal_id) and (animal_ins.datetime > animal_outs.datetime)
order by animal_ins.datetime
3. OUTER JOIN
- 두 테이블간 교집합을 조회하고, 한쪽 테이블에만 있는 데이터도 포함시켜 조회한다.
3.1 LEFT OUTER JOIN
- LEFT OUTER JOIN은 두 개의 테이블에서 같은 것을 조회하고, 왼쪽 테이블에만 있는 것을 포함해서 조회한다.
3.2 RIGHT OUTER JOIN
- RIGHT OUTER JOIN은 두 개의 테이블에서 같은 것을 조회하고, 오른쪽 테이블에만 있는 것을 포함해서 조회한다.
4. CROSS JOIN
- CROSS JOIN은 조인 조건 구 없이 2개의 테이블을 하나로 JOIN 합니다.
- 조인구가 없기 때문에 카테시안 곱이 발생합니다.
- CROSS JOIN은 FROM 절에
CROSS JOIN
구를 사용하면 됩니다.
5. UNION을 사용한 합집합 구현
- UNION 연산은 두 개의 테이블을 하나로 만드는 연산이다.
- 즉, 2개의 테이블을 하나로 합치는 것이다. 주의사항은 두 개의 테이블의 칼럼 수, 칼럼의 데이터 형식 모두가 일치해야 한다. 만약 두 개의 테이블에 UNION 연산이 사용될 때 칼럼 수 혹은 데이터 형식이 다르면 오류가 발생한다.
- UNION 연산은 두 개의 테이블을 하나로 합치면서 중복된 데이터를 제거한다.
- 그래서 SORT과정을 발생한다.
- UNION ALL은 두 개의 테이블을 하나로 합치는 것이며, UNION 처럼 중복을 제거하거나 정렬을 유발하지 않는다.
6. 차집합을 만드는 MINUS
- MINUS 연산은 두 개의 테이블에서 차집합을 조회한다. 즉 먼저 쓴 SELECT 문에는 있고 뒤에쓰는 SELECT 문에는 없는 집합을 조회하는 것이다.
'SQL' 카테고리의 다른 글
SQL의 실행 순서 (0) | 2020.12.23 |
---|---|
[프로그래머스] SQL 코딩테스트 레벨3 (0) | 2020.12.22 |
[SQL] case 문을 사용한 조권부 쿼리 작성 (0) | 2020.12.21 |
[SQL] NULL 체크 함수 (0) | 2020.12.21 |
[프로그래머스] SQL 코딩테스트 레벨 2 (0) | 2020.12.20 |
Comments