티스토리 뷰

내가 생각 하는 두가지 관점은

1) DBMS 를 사용하는 사람
   - 실제로 데이터를 모델링 하는 모델러, DBA, DB 개발자 기타 등등이 되겠다.

2) DBMS 를 만드는 사람
   - 실제 DBMS를 만드는 핵심 코어 엔지니어와 각 벤더의 DBMS를 지원하는 기술지원자의 입장 ...

등이 있을수 있겠다.

현재 국내에서 사용하는 데이터 베이스 시스템은 Oracle , MSSQL Server, MySQL, Cubrid, Sybase, DB2, Informix, PostgreSQL 서버 기타 등등이다.

실제로 DBMS 서버의 경우 ISO에 등록된 표준 스펙 SQL 1992, SQL 2003 등의 스펙으로 구현된 경우가 많다. 하지만 실제 DBMS 벤더의 경우 산업 표준이 아닌 벤더만의 특수 기능을 넣는 경우가 있다.

우선 DB 개발을 주로 하는 DB 개발자 위주의 내용이 되겠다.

예로 아우터 조인의 경우

오라클과 Cubrid 에서 지원하는 (+) 연산자를 사용하는 다음과 같은 SQL문이 있다.

SQL>  SELECT DISTINCT(a.deptno), b.deptno
          FROM emp a, dept b
          WHERE  
a.deptno(+) = b.deptno



Oracle9i
부터는 ANSI/ISO SQL표준인 LEFT OUTER JOIN , RIGHT OUTER JOIN, FULL OUTER JOIN 지원 합니다.

 

LEFT OUTER JOIN
 
왼쪽 테이블에 조인시킬 컬럽의 값이 없는 경우 사용합니다.
 
SQL>SELECT DISTINCT(e.deptno), d.deptno
    FROM dept d LEFT OUTER JOIN emp e
    ON d.deptno = e.deptno;
 
 
 
RIGHT OUTER JOIN
 -
오른쪽에 테이블에 조인시킬 컬럽의 값이 없는 경우 사용합니다.
 
SQL>SELECT DISTINCT(a.deptno), b.deptno
    FROM emp a RIGHT OUTER JOIN dept b
    ON a.deptno = b.deptno;
 
 
 
FULL OUTER JOIN
양쪽 테이블에 outer join 거는것을 TWO-WAY OUTER JOIN 또는 FULL OUTER JOIN이라 합니다.
 
SQL>SELECT DISTINCT(a.deptno), b.deptno
    FROM emp a FULL OUTER JOIN dept b
    ON a.deptno = b.deptno;

대부분의 DBMS엔진이 각 벤더만의 특수한 기능을 넣는다.

다음번에는 Recursive SQL 의 경우를 고찰해 볼것이다.