WORK/DB

Oracle 과 MSSQL 문법차이

im 수캥이 2023. 12. 20. 13:11

OracleMS SQL 은 둘 다 관계형 데이터베이스 시스템이지만, 각각의 제품은 특정한 문법과 기능을 가지고 있다.

아래는 오라클과 MS SQL 간의 주요 문법 차이에 대한 간략한 설명이다.

1. Data Type 의 차이

MS SQL Data Type Oracle Data Type
VARCHAR VARCHAR2 / VARCHAR
INT NUMBER
DATETIME DATE

 

2. 시퀀스 생성(자동 증가값) 의 차이

MS SQL 의 경우 테이블 생성 시 IDENTITY로 선언 / Oracle의 경우 테이블과 유사하게 SEQUENCE 를 생성해야 한다.

MS SQL 시퀀스 생성 ( 자동 증가값) Oracle 시퀀스 생성 ( 자동 증가값)
CREATE TABLE table_name
(
    id INT IDENTITY(1,1) PRIMARY KEY,
    column1 datatype,
    column2 datatype,
    ...
);
CREATE SEQUENCE sequence_name
START WITH 1
INCREMENT BY 1;

 

3. 날짜 및 시간 함수

Oracle의 경우에 form 절 뒤에 테이블이 없을 경우 dual 이라는 이름을 붙여 조회해야 한다.

MS SQL의 날짜 포멧이 굉장히 다양하기 때문에 따로 검색해서 확인해야 한다.

MS SQL 날짜 Oracle 날짜
SELECT GETDATE(); SELECT SYSDATE FROM dual;
SELECT CONVERT(CHAR(19), DATETIME, 20) SELECT
    TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS')
FROM DUAL

결과는 동일하게 YYYY-MM-DD HH:MM:SS 형식 ( 결과 : 2023-12-20 13:50:00) 출력된다.

4. 페이징 쿼리

MS SQL 페이징 Oracle 페이징
SELECT *
FROM (
    SELECT t.*, ROW_NUMBER() OVER (ORDER BY column_name) AS RowNum
    FROM table_name t
) AS RowConstrainedResult
WHERE RowNum BETWEEN 1 AND 10;
SELECT *
FROM (
    SELECT 
        t.*, ROWNUM r
    FROM table_name t
    WHERE ROWNUM <= 10
)
WHERE r >= 1;