Oracle SQL VS ANSI SQL


표준 문법 SQL과 Oracle SQL간의 문법 차이에 대해서 간단히 나타내고자 합니다.

해당 글을 포스팅 하는데 굉장히 오랜 시간이 들었네요

테이블 형식으로 된 글을 포스팅 하려고, 해당 글을 만들어 놓고

해야지 해야지 생각은 다른 글들을 포스팅 할 때마다 했는데

ADP하면서 밀리고, 사내 경진대회 나가면서 밀리고, 쉬면서 밀리고

좀 많이 밀렸었네요.

막상 또 테이블 형식으로 포스팅 해보니, 만드는데 엄청 힘들고

다 만들고 테스트 해보니 모양도 안 이쁘네요.


첫 번째 - 줄은 Oracle, 두 번째 - 줄은 ANSI SQL입니다.

세번째 - 줄은 비고 설명입니다.


1.NULL 확인 방법

  • NVL(컬럼,’’)

  • IFNULL(컬럼,’’)


2.현재 날짜 입력

  • SYSDATE

  • NOW()


3.날짜포맷 -> string

  • TO_CHAR(컬럼,’YYYYMMDDHH24MISS’)

  • DATE_FORMAT(컬럼,’%Y%m%d%H%i%s’)

  • ANSI(%y = 2자리)


4.요일 숫자 범위

  • 일요일=1, 토요일=7

  • 일요일=0, 토요일=6

  • oracle은 보통 -1해서 ANSI와 동일하게 사용


5.문자 합칠때

  • ’%’ || ‘k’ || ‘*’

  • concat(‘%’,’k’,’*’)


6.문자형으로 변환

  • TO_CHAR(632)

  • CAST(632 AS CHAR)


7.페이징 처리

  • where rownum between 0 and 10

  • from table limit 0,10


8.시퀀스 사용시, 다음 번호 호출

  • 시퀀스명.NEXTVAL

  • 시퀀스명.CURRVAL


9.alias 사용

  • as ‘alias명’ or alias명 or as alias명

  • as alias명 or alias명

  • ANSI는 alias명 자동 대문자


10.문자형 자르기

  • SUBSTR(문자열,1,10)

  • SUBSTR(문자열,1,10) + left(문자열,3), right(문자열,3)

  • (+는 추가 기능)


11.저장프로시저 있는지 파악 후, create

  • create or replace procedure 프로시저명

  • drop procedure if exists 프로시저명; create procedure 프로시저명


12.예약어가 컬럼명 일때

  • 컬럼명을 따옴표로 감싸기(select “column” from tab)

  • 컬럼명을 tab 위 ‘ ` ‘키로 감싸기


13.IF구문

  • DECODE(조건식,일치 조건 값, 참 반환 값,거짓 반환 값)

  • IF(조건식,참 반환 값, 거짓 반환 값)

  • (다중 조건인 CASE는 동일하게 사용)


14.JOIN 방법

일반적 join

  • inner join(두 테이블 내 일치)

  • outer join (left, right, full)

  • cross (모든 경우의 수 고려)(조건 기술 필요 없음)

  • self (자기자신과 join, alias로 지정 반드시 권유)

    이유 : Hierachical structure -> flat structure 변경) (성능 고려 x 가능)


차이점 :

  • ANSI는 테이블을 하나씩 붙임.

    select * from A inner join B on A.column1 = B.column1

    inner join C on A.column2 = C.column2

  • Oracle은 모든 table은 from절, 조건은 where

    join 당하는 테이블은 (+) 표기

    ex) from I1, I2 where I1.column1 = I2.column1(+)


이번 연도에는 Oracle sql만 주구장창 사용을 해와서

가끔씩 표준 형식 sql을 사용하는 DBMS들을 사용할 때 불편함이 있어서

차이점을 찾아보고 정리를 해보았습니다.

간단히 요약만 해본 것이고, 제가 다른 블로그들을 보고 해보긴 해보았지만,

엄청 자세하게 조사를 해보지는 못하여 잘못된 정보가 있을 수 있으니

참고용으로 보시는 것을 추천드립니다.

감사합니다.