.png)
조인(JOIN)을 통해서 2개 이상의 테이블을 연결 할 수 있다.
조인은 기본적으로 기본키나 외부키 값의 연관에 의해 성립 되지만, 논리적인 값들의 연관만 으로도 성립할 수 있다.
Equi Join, Simple Join 이라고도 한다.
가장 기본적인 조인이며, 테이블 간의 공통 컬럼을 사용하여 컬럼 조건에 의한 결과를 출력하게 해준다.
이 때 출력한 로우(Row)의 수는 조회조건에 만족하는 수 이다.
구문
SELECT E.LAST_NAME, D.DEPARTMENT_NAME
FROM EMPLOYEES E, DEPARTMENTS D
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID
AND LAST_NAME = 'Himuro';
내부 조인의 경우에 만족하지 않을 경우 출력 되지 않는 데이터들이 있다
이때 만족 하지 않는 데이터도 출력할 수 있게 해주는 것이 외부 조인이다.
구문
SELECT E.EMPLOYEE_ID, E.DEPARTMENT_ID, D.DEPARTMENT_NAME
FROM EMPLOYEES E, DEPARTMENTS D
WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID(+);
외부조인은 출력되지 않은 데이터를 가진 테이블과 조인한 테이블 쪽에(+)를 추가해야 한다.
외부조인을 사용하기 위한 규칙
1. (+)는 WHERE 절에서만 사용 가능하다
2. 조인 조건 외에 다른 조건이 올 경우 해당 조건에도 (+)를 추가한다.
3. (+)는 컬럼에만 사용이 가능하며, OR 연산자와는 사용할 수 없다.
4. 오직 하나의 테이블과 외부 조인이 가능하다.
5. IN과 서브커리와는 함께 사용할 수 없다
6. 조건 중 한 쪽에만 (+)를 추가할 수 있다.
다른 테이블이 아닌 자신의 테이블에 연결 하는 조인이다.
예를 들어 사원의 직속상관, 나의 정보 등에 사용 할 수 있다.
구문
SELECT A.LAST_NAME || '의 매니저는 ' || B.LAST_NAME || '이다.'
FROM EMPLOYEES A, EMPLOYEES B
WHERE A.MANAGER_ID = B.EMPLOYEE_ID
AND A.LAST_NAME = 'Kochhar'; // Kochhar 의 매니저는 King이다
DBMS(Oracle, MySQL, MSSQL 등)에서 각기 다른 SQL문을 사용하기 때문에 모든 데이터베이스에서 호환이 되도록 하는 구문이다.
Oracle Join 구문 - 내부조인
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND SAL > 2000;
ANSI Join 구문 - 내부조인
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.SAL
FROM EMP E INNER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
WHERE SAL > 2000;
Oracle Join 구문 - 외부조인
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.JOB, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO(+) = D.DEPTNO;
ANSI Join 구문 - 외부조인
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.JOB, E.SAL
FROM EMP E RIGHT JOIN DEPT D
ON E.DEPTNO = D.DEPTNO;
위 와 같이 기존 구문과 차이점은 FROM 절에 JOIN 키워드를 추가하며, 기존 구문 WHERE절에
동일 컬럼명을 명시 해놓은 구문을 ON절에 명시한다.