2010. 6. 10. 11:10

정수형 (integer)

MSSQL 은 크게 4가지로 나뉩니다.

자세한 내용은 MSSQL 도움말이나 책을 참조하시기 바랍니다.

tinyint > smallint > int > bigint

 

하지만 오라클의 경우는

Number를 사용합니다.

number가 생략된 경우는 MSSQL의 INT로 보시는 것이 나을 것이고요

Number(10)이라고 쓰는 경우가 있는데

이 경우는 9,999,999,999까지 숫자를 입력받도록 하겠다는 것으로 보시면 됩니다.

 

가변형 문자에서도 차이가 나는 데요

MSSQL에서는 varchar(10), nvarchar(10) 등으로 정의를 한다면

오라클에서는 varchar2(10), nvarchar2(10) 등으로 정의를 합니다.

 

날짜형에서도 차이가 있습니다.

MSSQL은

smalldatetime, dateime(이게 맞는지 모르겠네요. 주로 smalldatetime을 써서리)으로 나뉘는데요.

오라클에서는

date 하나 밖에 없습니다.

들어가는 형태는 MSSQL의 datetime가 같은 형식으로 들어 갑니다.

 

이 밖에도 몇가지가 더 있는데

이 정도의 차이만 알고 계셔도 된다고 봅니다.

 

참고로 날짜를 입력할 때

MSSQL에서는 getdate()를 쓰지만

오라클에서는 sysdate라고 씁니다.

 

또한 MSSQL에서는 테이블 생성 시

자동 증가 옵션을 줄 때 identity(1,1)하면 되지만

오라클에서는

자동 증가 옵션이 없는 관계로

아래 와 같이 해주셔야 합니다.

MS-SQL은 IDENTITY를, MySQL은 auto_increment와 같이 쉽게 사용할 수 있는 방법이 있는데 오라클에서는 Sequence를 사용하여 다음과 같이 유사하게 구현할 수 있다

 

1. 자동증가컬럼을 사용하고자 하는 MYTABLE테이블을 생성한다.


        CREATE TABLE MYTABLE
                (ID NUMBER, NAME VARCHAR2(20));

 

2. CREATE SEQUENCE 라는 문장을 사용하여 SEQ_ID라는 이름의 시퀀스를 만든다.


        CREATE SEQUENCE SEQ_ID INCREMENT BY 1 START WITH 10000;

       -- INCREMENT BY 1 : 증가값은 1
       -- START WITH 10000 :  10000부터 증가

 

3.  테이블에 데이터 입력시에는 NEXTVAL이라는 슈도 칼럼(Pseudo-column)을 이용하여 시퀸스를 사용한다.

 

        INSERT INTO MYTABLE VALUES( SEQ_ID.NEXTVAL, '홍길동');

        -- CURRVAL : 현재 값을 반환 합니다. .
        -- NEXTVAL : 현재 시퀀스값의 다음 값을 반환 합니다.


Posted by 옹니미