[JOIN]
1. JOIN: 필요한 데이터가 두 개 이상의 테이블에 나누어져있을 때 데이터를 합쳐서
가져오고자 하는 경우 사용
예)직원 ID가 100인 직원의 부서이름을 출력
2. FROM 절
● 테이블 여러 개 지정하여 출력가능
● 테이블에 별칭 지정 가능
● FROM절에 별칭 사용하면 그 이후에 오는 실행절(SELECT, WHERE절 등)에 모두 별칭만
사용해야 한다.
● 테이블 여러 개 사용 시, 어느 테이블에서 가져온 컬럼인지 명확하게 지정해야 한다.
-방법: 테이블명(별칭).컬럼
● 컬럼이 각각의 테이블에 모두 있는 경우 구분짓기 위해 컬럼 앞에 테이블을 명시해야
하지만, 한 테이블에만 있는 컬럼인 경우 반드시 테이블명을 명시할 필요없다.
EMPLOYEES와 DEPARTMENTS에 모두 있는 컬럼일 경우 DEPARTMENTS에만 있는 컬럼일 경우
3. CROSS JOIN
-조건절을 쓰지 않고, 테이블의 모든 데이터를 가져오는 방법
-테이블 1의 행의 개수*테이블 2의 행의 개수=CROSS JOIN한 행의 개수
4. INNER JOIN(등가조인)
-출력행을 각 테이블의 특정 열에 일치한 데이터를 기준으로 출력하는 방법
-A 테이블과 B테이블이 일치되는 열을 찾아 조건을 작성한다.
-NULL값을 출력하지 않는다.
예)직원 테이블의 부서ID=부서 테이블의 부서ID
1)WHERE 조건절
SELECT
FROM A 테이블, B테이블
WHERE 조인조건
2)ANSI 문법: 모든 DBMS에서 사용가능
[실습1]
--WHERE절
SELECT E.EMPLOYEE_ID, J.JOB_ID, J.JOB_TITLE
FROM EMPLOYEES E, JOBS J
WHERE E.JOB_ID =J.JOB_ID
ORDER BY 1;
--ANSI 문법
SELECT E.EMPLOYEE_ID, J.JOB_ID, J.JOB_TITLE
FROM EMPLOYEES E INNER JOIN JOBS J
ON (E.JOB_ID =J.JOB_ID)
ORDER BY 1;
5. OUTER JOIN
INNER JOIN은 NULL값을 출력하지 않는다.
NULL값을 포함해서 출력해야 할 때 OUTER JOIN 사용
● LEFT OUTER: A 테이블의 NULL포함
● FULL OUTER: A, B 테이블의 NULL포함
● RIGHT OUTER: B 테이블의 NULL 포함
1)ANSI 문법
A테이블과 B 테이블 사이에 OUTER조인 종류만 바꿔서 입력
2)ORACLE 문법(+)
-INNER JOIN의 WHERE 조건절과 문법 동일
-WHERE 조건절에서 JOIN하고자 하는 테이블 반대쪽 테이블에 (+)기호 사용
● LEFT OUTER JOIN: B 컬럼(+)
● RIGHT OUTER JOIN: A 컬럼(+)
● FULL OUTER JOIN: UNION 사용(119p.)
-LEFT OUTER JOIN, RIGHT OUTER JOIN 구문 사이에 UNION 사용
[실습2]
SELECT D.DEPARTMENT_NAME, D.MANAGER_ID, E.EMPLOYEES_ID
FROM DEPARTMENTS D INNER JOIN EMPLOYEES E
ON(WHERE D.DEPARTMENT_ID=E.DEPARTMENT_ID);
[실습3]
SELECT D. DEPARTMENT_NAME, L.CITY, C.CONTRY_NAME
FROM DEPARTMENTS D, LOCATIONS L, COUNTRIES C
WHERE D.LOCATION_ID =L.LOCATION_ID
AND C.COUNTRY_ID, L.COUNTRY_ID;
'데이터베이스' 카테고리의 다른 글
[DB]8.DML&서브쿼리 (1) | 2023.06.07 |
---|---|
[DB]7. DDL (1) | 2023.06.06 |
[DB]5. GROP BY&HAVING절 (0) | 2023.06.01 |
[DB]4. Oracle 함수 (0) | 2023.05.31 |
[DB]3. WHERE절 (0) | 2023.05.30 |