오늘이라도

[Oracle] 8. JOIN, CARTESIAN PRODUCT, EQUI JOIN, NON-EQUI JOIN, OUTER JOIN 본문

취업성공패키지 SW 개발자 교육/Oracle RDBMS

[Oracle] 8. JOIN, CARTESIAN PRODUCT, EQUI JOIN, NON-EQUI JOIN, OUTER JOIN

upcake_ 2020. 5. 6. 17:13
반응형

 

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 

gif 파일은 클릭해서 보는 것이 정확합니다.


▲더블 클릭으로 객체 열기 설정

※ 클릭 한 번으로 테이블이나 파일이 열리는 게 불편하다면 해당 설정을 통해 바꿀 수 있다.

 

 - 결합 구문 : JOIN -

① 카티션 곱(Cartesian Product; 데카르트 곱; 곱집합)

▲카티션 곱 예제

 - 카티션 곱이란 각 집합의 원소들이 서로 곱해져서 만들어진 곱집합을 의미한다.

 - 예제에서는 employees의 원소 107개와 departments의  원소 27개가 서로 곱해져 출력되어 2889개의 행이 출력되었다.

 - 이런 식으로 카티션 곱이 결과로 출력되는 것을 막기 위해 조인 구문이 필요하다.

 

 

② 등가 조인(EQUI JOIN)

 

 - 등가 조인이란 WHERE절에 동등 연산자(=)를 사용하는 조인 형식이다.

 - 테이블 간에 공통으로 만족되는 값을 가진 경우의 결과만 반환한다.

 - FROM 절에 테이블 목록을 나열한 뒤, 각 테이블 명에 별칭(Alias)을 지정한다.

 - WHERE 절에 테이블명(별칭).칼럼명 = 테이블명(별칭).칼럼명 형식으로 등가 조인 구문을 작성한다.

 

▲개체-관계 다이어그램

 - 개체-관계 다이어그램(ERD; Entity Relationship Diagram)은 각 테이블의 관계를 나타내 주는 다이어그램이다.

 

▲등가 조인 예제 1
▲등가 조인 예제 2
▲등가 조인 예제 3
▲등가 조인 예제 4

 - 쿼리문에 사용한 테이블의 개수를 n이라 할 때, n-1만큼의 조인 조건문이 필요하다.,

 - 복수의 조건문은 WHERE ~ AND ~ AND.... 의 형식으로 작성한다.

 

▲등가 조인 문제 1
▲등가 조인 문제 2
▲등가 조인 문제 3
▲등가 조인 문제 4
▲등가 조인 문제 5
▲등가 조인 문제 6
▲등가 조인 문제 7
▲등가 조인 문제 8
▲등가 조인 문제 9
▲등가 조인 문제 10

 

③ 비등가 조인(NON-EQUI JOIN)

▲비등가 조인 예제 1

 - 동등 연산자(=) 이외의 연산자를 사용하여 JOIN 구문을 작성하는 것을 비등가 조인이라 한다.

 - 비등가 조인에 사용되는 연산자로는 비교 연산자(<=, >=, <, >), 범위 연산자(BETWEEN), IN 연산자 등이 있다.

 - 거의 사용하지 않는다고 한다.

 

④외부 조인(OUTER JOIN)

▲외부 조인 예제 1

 - 외부 조인(OUTER JOIN)이란, NULL 값이 생략되는 정보도 포함해서 표시하기 위해 사용하는 조인 형식이다.

 - 어느 테이블 칼럼이 조인할 다른 테이블 칼럼에 비해 데이터가 부족하여 NULL 값으로 처리되어 생략될 경우에, OUTER 기호 (+)를 붙이는 형식으로 사용한다.

 - 예제에서는 departments 테이블의 department_id 칼럼에 NULL 값이 없어서 178번 사원이 생략되어 출력되므로, d.department_id (+) 형식으로 외부 조인을 사용하였다.

 

▲외부 조인 예제 2

반응형