SQL-99 표준

신광진·2021년 3월 18일
0

SQL-99 표준


SQL문은 ISO/ANSI에서 관계형 데이터베이스 표준 언어로 지정(SQL-82)된 후 SQL-92를 거쳐 SQL-99 표준 문법이 나왔습니다.

그리고 오라클은 9i 버전부터 SQL-99 방식의 문법을 지원하고 있습니다.

SQL-99 조인은 앞에서 배운 조인 방식과 같은 기능이지만 문법이 조금 다릅니다.

또한, 다른 DMBS 제품에서도 사용가능하고 앞에서 배운 조인 방식과 더불어 SQL-99 방식의 조인도 많이 사용하기 때문에 간단하게 사용법을 알아보려고 합니다.

NATURAL JOIN


NATURAL JOIN은 등가 조인을 대신하여 사용할 수 있는 조인 방식입니다.

조인 대상이 되는 두 테이블에 이름과 자료형이 같은 열을 찾은 후 그 열을 기준으로 등가 조인을 해주는 방식입니다.

[NATURAL JOIN 예시]

SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR, 
       E.HIREDATE, E.SAL, E.COMM,
       DEPTNO,
       D.DNAME, D.LOC
  FROM EMP E NATURAL JOIN DEPT D
ORDER BY DEPTNO, E.EMPNO

[출력결과]

EMP테이블과 DEPT테이블의 공통 컬럼은 DEPTNO입니다.

그렇다면 조인기준에 해당되는 컬럼은 DEPTNO입니다.

NATURAL JOIN을 사용할 때는 SELECT절에 조인기준이 되는 컬럼의 이름을 명시할 때 테이블 이름을 붙이면 안되는 특성이 있습니다.

또한 WHERE절이 아닌 FROM절에 조인 키워드를 사용하기 때문에 주의해야 합니다.

JOIN ~ USING


JOIN ~ USING 또한 등가조인을 대신하여 사용하는 조인방식입니다

위에서 설명한 NATURAL JOIN과 기능상 차이가 없으므로 바로 예제를 보도록 하겠습니다.

[JOIN ~ USING 예시]

SELECT E.EMPNO, E.ENAME, E.JOB, E.MGR,
       E.HIREDATE, E.SAL, E.COMM,
       DEPTNO, D.DNAME, D.LOC
  FROM EMP E JOIN DEPT D USING (DEPTNO)
 WHERE SAL >= 3000
 ORDER BY DEPTNO, E.EMPNO

[출력결과]

JOIN ~ USING ()은 ( )안에 조인 기준이 되는 컬럼을 명시하여 사용합니다.

위에서 배운 NATURAL JOIN과 마찬가지로 조인 기준이 되는 컬럼을 SELECT절에 명시할 때 테이블 이름이 붙으면 안되는 특징이 있으며 조인 키워드를 FROM절에 사용합니다.


JOIN ~ ON을 사용하여 조인을 하는 방식도 있지만, SQL-99이전 방식의 등가조인과 유사한 방식으로 사용됨으로 간단한 예시만 보겠습니다.

SELECT E.DEPTNO
  FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)

위와 같은 형식으로 사용되며, SELECT절에 조인 기준이 되는 컬럼을 명시할 때 테이블이름이 붙어야 합니다.

외부조인(OUTER JOIN)


SQL-99이전과는 다르게 직접적으로 OUTER JOIN이라는 키워드를 사용합니다.

개인적인 생각으로 외부조인을 사용할 때는 SQL-99버전을 사용하는것 더 좋다고 생각하며 이렇게 생각하는데에는 2가지 이유가 있습니다.

  • 직관적으로 어느쪽 열을 기준으로 외부조인을 하는지 알 수 있다.
  • Full Outer Join을 사용할 수 있다.

기존에는 Full Outer Join을 사용하기 위해서는 두 개의 쿼리를 작성하고 UNION집합 연산자를 사용해야 했습니다.

하지만 SQL-99 버전에서는 FULL OUTER JOIN키워드를 사용할 수 있습니다.

[`왼쪽 외부조인(LEFT OUTER JOIN) SQL-99 예시]`

 SELECT E1.EMPNO, E1.ENAME, E1.MGR,
       E2.EMPNO AS MGR_EMPNO,
       E2.ENAME AS MGR_NAME
  FROM EMP E1 LEFT OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO)
ORDER BY E1.EMPNO

[실행결과]

외부조인 포스팅을 보신분들은 알겠지만, SQL-99이전 버전의 결과와 동일합니다.

하지만 조인조건을 FROM절에 기술하고, (+)기호를 사용하지 않습니다.

오른쪽 외부조인, 전체 외부조인의 경우에는 키워드만 바꿔주면 되기때문에 예시를 살펴보지 않겠습니다.

SUMMARY


SQL-99 방식의 조인형식

  • NATURAL JOIN
    • FROM EMP E NATURAL JOIN DEPT D
  • JOIN ~ USING
    • FROM EMP E JOIN DEPT D USING (DEPTNO)
  • JOIN ~ ON
    • FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO)
  • OUTER JOIN
    • FROM EMP E1 LEFT OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO)
    • FROM EMP E1 RIGHT OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO)
    • FROM EMP E1 FULL OUTER JOIN EMP E2 ON (E1.MGR = E2.EMPNO)
profile
이거 왜안되냐

0개의 댓글