[SQL] join , set operator,

Database / / 2022. 4. 18. 19:30

 

 

▶ 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