*Result Set : 데이터베이스에서 쿼리문을 실행하면서 발생한 결과값, 데이터의 표
관계형 데이터베이스는 최소한의 데이터를 테이블에 담고 있어 원하는 정보를 테이블에서 조회하려면 한 개 이상의 테이블에서 데이터를 읽어와야 되는경우가 많다.
테이블간 관계를 맺기 위한 연결고리 역할이 필요한데, 두 테이블에서 같은 데이터를 저장하는 컬럼이 연결고리가 된다.
JOIN구문은 ANSI구문으로 작성된 기준이다.
- 미국 국립 표준 협회(American National Standards Institute, ANSI) 미국의 산업 표준을 제정하는 민간단체(국제표준화기구 ISO에 가입)
- ANSI에서 제정된 표준을 ANSI라고 하고 여기서 제정한 표준 중 가장 유명한 것이 ASCII코드이다.
연결되는 컬럼의 값이 일치하는 행들만 조인된다.
(즉, 일치하는 값이 없는 행은 조인에서 제외된다.)
<예제>
EMPLOTEE 테이블, DEPARTMENT 테이블을 참조하여
사번, 이름, 부서코드, 부서명 조회
[힌트1]
EMPLOYEE 테이블에 DEPT_CODE컬럼과
DEPARTMENT 테이블에 DEPT_ID컬럼은
서로 같은 부서 코드를 나타낸다.
[힌트2]
이를 통해 두 테이블이 관계가 있음을 알고
조인을 통해 데이터 추출이 가능하다.
<정답>
SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE
FROM EMPLOYEE
JOIN DEPARTMENT ON(DEPT_CODE = DEPT_ID);
{정리}
연결에 사용할 컬럼명이 서로 다를 경우 ON()을 사용
<결과>
200 선동일 D9 총무부
201 송종기 D9 총무부
.
.
.
221 유하진 D2 회계관리부
두 테이블의 지정하는 컬럼값이 일치하지 않는 행도 조인에 포함을 시킨다.
(반드시 OUTER JOIN임을 명시해야한다.)
<예제>
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE LEFT JOIN DEPARTMENT
ON(DEPT_CODE = DEPT_ID);
<정리>
JOIN 구문 기준으로 왼쪽에 작성된 테이블의 모든 행이
결과(RESULT SET)에 포함
<결과>
방명수 인사관리부
.
.
.
노옹철 총무부
하동운
<예제>
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE RIGHT JOIN DEPARTMENT
ON(DEPT_CODE = DEPT_ID);
<정리>
JOIN 구문 기준으로 오른쪽에 작성된 테이블의 모든 행이
결과(RESULT SET)에 포함
<결과>
선동일 총무부
.
.
.
이태림 기술지원부
마케팅부
국내영업부
<예제>
SELECT EMP_NAME, DEPT_TITLE
FROM EMPLOYEE FULL OUTER JOIN DEPARTMENT
ON(DEPT_CODE = DEPT_ID);
<결과>
선동일 총무부
.
.
.
전지연 인사관리부
이오리
조인되는 테이블의 각 행들이 모두 매핑된 데이터가 검색되는 방법(곱집함)이다.
이 때, JOIN 구문을 잘못 작성하면 결과로 나타난다.