Oracle 과 MS 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; |
'WORK > DB' 카테고리의 다른 글
mysql select 값으로 update 하기 (2) | 2023.11.02 |
---|---|
mysql function 생성 시 You have en error in your SQL syntax 오류 해결 (1) | 2023.10.31 |
mysql TRUNCATE를 이용하여 원단위 없애기 (1) | 2023.10.31 |
DBeaver 사용 Tip (0) | 2023.10.12 |
MY SQL 특정문자 개수 구하기 (1) | 2023.10.05 |