반응형

오라클(Oracle) 조인(JOIN) 문법

 

INNER JOIN 

- 일반적인 조인시 , 를 생략하고 INNER JOIN 을 추가하고 WHERE 절 대신 ON 절을 사용해야 한다.

- INNER 는 생략이 가능하다. 

1
2
3
4
5
-- INNER JOIN 사용
SELECT E.EMPNO, E.ENAME FROM DEPT D INNER JOIN EMP E ON D.DEPTNO = E.DEPTNO;
 
-- 일반적인 SQL 
SELECT E.EMPNO, E.ENAME FROM DEPT D, EMP E WHERE D.DEPTNO = E.DEPTNO;
cs

 

 

 

NATURAL  JOIN

- Equi-Join 과 동일하다.

- 두 테이블의 동일한 이름을 가지는 컬럼(column) 은 모두 조인이 된다. 

- 동일한 컬럼을 내부적으로 검색하게 되므로 테이블 Alias 를 주면 오류가 발새안다.

- 동일한 컬럼이 2개 이상인 경우 JOIN-USING 문장으로 조인(JOIN)되는 컬럼(column) 을 제어할 수 있다.

1
2
3
4
5
-- NATURAL JOIN 사용 
SELECT EMPNO, ENAME, DEPTNO FROM EMP NATURAL JOIN DEPT;
 
-- Oralce9i 이전 SQL
SELECT E.EMPNO, E.ENAME, D.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO;
cs

 

 

 

JOIN ~ USING 

- NATURAL JOIN 의 단점을 동일한 일므을 가지는 컬럼(column) 은 모두 조인(JOIN) 되는데 USING 문을 사용하면 컬럼을 선택하여 조인할 수 있다.

- USING 절 안에 포함되는 컬럼에 Alias 를 지정하명 오류가 발생하다. 

1
2
-- 일반적인 사용
SELECT E.EMPNO, E.ENAME, DEPTNO FROM EMP E JOIN DEPT D USING(DEPTNO);
cs

 

 

 

ON 구문

- 조인(JOIN) 조건을 지정할 수 있다.

- 모든 논리연산 및 서브쿼리를 지정할 수 있다. 

1
2
3
4
5
6
7
-- 테스트를 위해 아래 INSERT 먼저 실행할 ㅓㅅ 
INSERT INTO BONUS(ENAME, JOB, SAL) VALUES('SMITH''CLERK'500);
 
-- ON절 사용 예제 
SELECT E.EMPNO, E.ENAME, E.SAL FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)
JOIN BONUS B ON (B.ENAME = E.ENAME)
WHERE E.SAL IS NOT NULL;
cs

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기