본문 바로가기
SQL(MySQL)

[MySQL] 01-1. Oracle과 MySQL의 쿼리문 차이

by ssunooo 2024. 10. 3.

 

 

 

Oracle에서 MySQL로 데이터베이스를 이관 시 쿼리문 변경 사항

 

1. 데이터 타입 변경

  • VARCHAR2 → VARCHAR: Oracle의 VARCHAR2는 MySQL에서는 VARCHAR로 변경
  • NUMBER → INT 또는 DECIMAL: Oracle의 NUMBER는 MySQL에서 INT, DECIMAL 등의 적절한 타입으로 변환
  • CLOB → TEXT: Oracle의 CLOB는 MySQL의 TEXT로 변환
  • DATE → DATETIME: Oracle의 DATE는 MySQL의 DATETIME으로 변환

 

2. 함수 및 연산자 변경

  • SYSDATE → NOW(): Oracle의 SYSDATE는 MySQL의 NOW()로 변환
  • NVL → IFNULL: Oracle의 NVL 함수는 MySQL의 IFNULL로 변환
  • DECODE → CASE: Oracle의 DECODE는 MySQL의 CASE 문으로 변환

 

3. 문자열 연산

  • || → CONCAT: Oracle의 문자열 연결 연산자인 ||는 MySQL의 CONCAT 함수로 변환

 

4. LIMIT 및 OFFSET

  • Oracle의 ROWNUM 또는 ROW_NUMBER() 사용 시, MySQL에서는 LIMIT과 OFFSET 구문을 사용
-- Oracle
SELECT * FROM my_table WHERE ROWNUM <= 10;

-- MySQL
SELECT * FROM my_table LIMIT 10;

 

5. 외래 키 및 제약 조건

  • Oracle에서는 ON DELETE CASCADE와 같은 옵션을 사용
  • MySQL에서는 동일하게 사용

 

6. 시퀀스

  • Oracle의 시퀀스는 MySQL에서 AUTO_INCREMENT 속성을 사용하여 대체
  • 테이블 생성 시 해당 컬럼에 AUTO_INCREMENT를 추가

 

 

2024.10.03