일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- ML
- 기계학습
- 빅데이터분석기사
- 서평
- 에이블러
- 에이블스쿨
- dx
- Ai
- matplot
- 웹크롤링
- 지도학습
- 프로그래머스
- 딥러닝
- r
- KT 에이블스쿨
- KT AIVLE
- 하둡
- SQLD
- kaggle
- 다변량분석
- cnn
- hadoop
- 가나다영
- 시계열
- 빅분기
- ETRI
- Eda
- arima
- 한국전자통신연구원 인턴
- 한국전자통신연구원
- httr
- python
- 에트리 인턴
- 시각화
- 머신러닝
- kt aivle school
- 하계인턴
- SQL
- ggplot2
- 소셜네트워크분석
Archives
- Today
- Total
소품집
[SQL] JOIN(조인) 본문
728x90
1. EQUI JOIN (교집합)
EQUI JOIN (교집합)
- 조인은 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만드는 과정이다.
- 조인의 가장 기본은 교집합을 만드는 것이다.
- select * from student, major where student.majorno = major.majorno;
- student table과 major table에서 majorno 칼럼을 사용하여 같은 것을 조인한다.
- EQUI JOIN에서만 HASH JOIN이 가능하다.
- 해시 조인은 먼저 선행 테이블을 결정하고, 선행 테이블에서 주어진 조건(where)에 해당하는 행을 선택한다.
- 해당 행이 선택되면 조인 키를 기준으로, 해시 함수를 사용해서 해시 테이블을 메인 메모리(Main memory)에 생성하고, 후행 테이블에서 주어진 조건을 만족하는 행을 찾는다.
- 후행 테이블의 조인 키를 사용해서, 해시 함수를 적용하여 해당 버킷을 찾는다.
INNER JOIN
- INNER JOIN은 ON 문을 사용해서 테이블을 연결한다.
- select * from student inner join major on student.majorno = major.majorno;
INTERSECT 연산
- 두 개의 테이블에서 교집합을 조회한다.
- 즉, 두 개의 테이블에서 공통된 값을 조회한다.
- select majorno from student intersect select majorno from major;
2. NON-EQUI (비등가) 조인
- NON-EQUI는 두 개의 테이블 간에 조인을 하는 경우, ''="을 사용하지 않고, >, <, ≥, ≤ 등을 사용한다.
OUTER JOIN
- OUTER JOIN은 두 개의 테이블 간에 교집합(EQUI JOIN)을 조회하고, 한쪽 테이블에만 있는 데이터도 포함시켜 조회한다.
- 이 때, 왼쪽에만 있는 행도 포함하면 LEFT OUTER JOIN이라고 하고, 오른쪽 테이블에만 있는 행만 포함시키면 RIGHT OUTER JOIN이라고 한다.
- FULL OUTER JOIN은 LEFT OUTER JOIN과 RIGHT OUTER JOIN을 모두 수행하는 것이다.
- Oracle Databsee에서는 OUTER JOIN을 할 때, '(+)' 기호를 사용해서 할 수 있다.
- SELECT * FROM STUDENT, MAJOR WHERE STUDENT.MAJORNO (+)= MAJOR.MAJORNO;
- MAJOR 테이블에는 있지만, STUDENT 테이블에는 없는 정보도 조회된다.
CROSS JOIN
- CROSS JOIN은 조인 조건구 없이 2개의 테이블을 하나로 조인한다.
- 조인구가 없기 때문에 카테시안 곱이 발생한다.
- 예를들어, 12개의 행이 있는 테이블과 행이 5개 있는 테이블을 조인하면 60(12*5) 개의 행이 조회된다.
- CROSS JOIN은 FROM 절에 'CROSS JOIN' 구를 사용하면 된다.
- select * from student cross join major;
- select * from student, major;
UNION을 사용한 합집합 구현
-
UNION
- UNION 연산은 두 개의 테이블을 하나로 만드는 연산이다.
- 단, 두개의 테이블의 칼럼 수, 칼럼의 데이터 형식 모두가 일치해야 한다. 만약 둘 중 하나라도 다르다면 오류 발생!
- UNION 연산은 두 개의 테이블을 하나로 합치면서 중복된 데이터를 제거한다.
- 그래서 UNION은 정렬(SORT) 과정을 발생시킨다.
- select majorno from student union select majorno from major;
-
UNION ALL
- UNION과 달리 중복을 제거하거나 정렬을 유발하지 않는다.
- select majorno from student union all select majorno from major;
차집합을 만드는 MINUS
- MINUS 연산은 두 개의 테이블에서 차집합을 조회한다.
- 즉, 선행하는 select 문에는 있고, 후행하는 select 문에는 없는 집합을 조회하는 것
- MS-SQL에서 MINUS와 동일한 연산은 EXCEPT다.
728x90
'자격증 > SQL' 카테고리의 다른 글
[SQL 활용] Subquery(서브쿼리) (0) | 2021.03.10 |
---|---|
[SQL 활용] 계층형 조회 (Connect by) (0) | 2021.03.10 |
[SQL] 연산자 쓰임 및 우선순위 (0) | 2021.03.09 |
[SQL] 문자유형 비교 방법 (0) | 2021.03.09 |
[SQL] 반정규화의 필요성 (0) | 2021.03.09 |
Comments