▶ join
● 두개 이상의 테이블을 연결해서 가상테이블 relation을 생성하는 문법
● 기준컬럼을 가지고 두 테이블의 레코드를 연결
● 사실상 inner 이 생략된 inner join
● 분류는 EQUI-JOIN ,NON-EQUI-JOIN
▶EQUI-JOIN
▶ inner join
● 컬럼을 비교하교 중복 안되는 행을 제거
● 각 테이블에서 기준컬럼이 null인 행, 상대테이블에서 매칭되는 행이 없는 행 제외
● 두 테이블간의 교집합을 의미한다
● inner 키워드 생략가능, (inner) join으로 작성
▶ outer join
●right outer join
● 부서 null값 제외
●left outer join
●인턴은 null 값 제외
●full outer join
● 좌.우측 테이블 기준으로 조인. 기준이 된 테이블은 누락되는 행이 없다.
● outer 키워드 생략 가능 left (outer) join | right (outer) join
※ 별칭 생략은 기준 컬럼명이 다른경우만 가능
기준 컬럼명이 같으면 생략 불가
using(컬럼명) 대신 가용가능
▶ cross join
● 상호조인, 모든 경우의 수대로 조인처리
● 좌측 경우의 수 만큼 우측 연결
● 가상테이블을 하나의 컬럼으로
▶ self join
● 같은 테이블 조인처리
▶ multiple join
● 여러테이블을 동시에 조인처리
● ansi 표준문법에서는 조인되는 순서가 중요하다.
● left join 기준컬럼이 null인경우 연속적으로 left join하지 않는 경우 제외된다.
▶ non_equi join
● 조인 조건절에서 동등비교연산이 아닌 연산자를 사용해 조인하는 경우
▶ set operator
● 집합연산자. 두 개 이상의 결과집합을 세로로 연결해서 하나의 가상테이블(ralation)을 생성
조건
● 1. select절의 컬럼수가 동일해야 한다.
● 2. select절의 사용하는 컬럼의 자료형이 상호호환해야 한다.
● 3. order by절은 마지막 결과집합에서 단 한번 사용이 가능하다.
● 4. 컬럼명이 다른 경우, 첫번째 결과집합의 컬럼명 사용
집합 연산자 종류
● 1. union 합집합 - 두 결과집합을 그대로 연결하되, 중복제거, 첫번째 컬럼기준 오름차순 정렬기능 지원
● 2. union all 합집합 - 두 결과집합을 그대로 연결. (다른 설정없이 붙인다. 따라서 성능/속도가 union 보다 좋다.)
● 3. intersect 교집합
● 4. minus 차집합
a 컬럼은 5행 , b 컬럼은 10행 3개의 중복값을 가진다
union = 15-3행
union all = 15행
intersect
● 중복된 행만 출력, 모든 컬럼값이 일치하는 경우
minus
● 위 결과집합에서 아래 결과집합과의 중복된 행을 제거하고 조회
'Database' 카테고리의 다른 글
[SQL] DML (0) | 2022.04.20 |
---|---|
[SQL] 그룹함수 (0) | 2022.04.19 |
[SQL] 숫자처리함수,날짜처리함수,형변환 함수 (0) | 2022.04.14 |
[SQL] DQL 심화 (0) | 2022.04.14 |
[SQL]데이터 타입 (0) | 2022.04.14 |