본문 바로가기
Database

DB - Oracle & MySql 쿼리문 차이 정리

by devLog by Ronnie's 2021. 4. 27.

들어가며


오라클 디비와 mysql  디비의 사용에 따라 차이점을 비교 정리한다.

 

 

 

1. 공백치환 함수 ( NULL값 확인 함수 )

ORACLE에서는 NVL함수를 사용하지만 MYSQL에서는 IFNULL을 사용한다.

Oracle : SELECT NVL('컬럼명', '') FROM DUAL;

MySql : SELECT IFNULL('컬럼명', '') FROM DUAL;

 

2. 현재 날짜시간

ORACLE에서는 SYSDATE를 사용하지만 MYSQL에서는 NOW()함수를 사용한다.

Oracle : SYSDATE

Mysql  : NOW() 

 

 

3. 날짜포멧 

ORACLE에서는 날짜를 STRING으로 변경시 TO_CHAR()함수를 사용하지만 MYSQL에서는 DATE_FORMAT()함수를 사용한다.

Oracle : TO_CHAR(sysdate,'MMDDYYYYHH24MISS')

Mysql  : DATE_FORMAT(now(),'%Y%m%d%H%i%s')  -> 여기서 대문자Y는 4자리 년도(2021), 소문자 y는 2자리 년도(21)

 

4. 날짜 포멧 : 요일

Oracle : 요일이 1~7로 인식함  -> TO_CHAR(SYSDATE 1, 'D') 

Mysql : 요일이 0~6으로 인식   -> DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%w')

* 참고로 자바스크립트가 0~6으로 인식하기에 Oracle 쿼리에서 -1을 해서 맞추는 경우가 많다.

* 요일 순서 : 일,월,화,수,목,금,토

 

5. Like절 '%' 사용법

ORACLE에서는 문자와 문자를 합칠때 '||'을 사용하고, MYSQL에서는 문자와 문자를 합칠때 CONCAT()함수를 사용합니다.

Oracle : SELECT USER_ID FROM KGON WHERE USER_ID LIKE '%' || '문자' || '%'

Mysql : SELECT USER_ID FROM KGON WHERE USER_ID LIKE CONCAT('%','문자','%')

 

6. 형변환

ORACLE에서는 TO_CHAR, TO_NUMBER을 사용하여 형을 변환하지만 MYSQL에서는 CAST를 사용하여 형을 변환합니다.

Oracle : SELECT TO_CHAR(632) FROM DUAL (To_char, To_number 등)

Mysql : SELECT CAST(1234 AS CHAR) FROM DUAL

 

7. 대소문자 구분함

Oracle : 구분없음

Mysql : 기본적으로 구분하나, 설정으로 변경 가능하다.

 

8. ROWNUM

Oracle : where 절에 rownum > 5 and rownum =< 10 

Mysql : where절 없이 limit 5,10

 

 

9. Sequence(시퀀스)는 둘 다 사용자함수를 만들어서 아래와 같이 사용

Oracle : 시퀀스명.nextval

Mysql : 시퀀스명.currval

 

10. 문자열 자르기

Oracle: SUBSTR(문자열, 1, 10)

Mysql: SUBSTRING(문자열, 1,10), LEFT(문자열, 3), RIGHT(문자열, 3)

 

11. 문자열 합치기 ( - 문자열을 연결한다고 가정)

Oracle: 문자열(또는 컬럼) ||' - '

Mysql: CONCAT(문자열(또는 컬럼), ' - ')

 

12. 예약어가 컬럼명일 때

Oracle: 컬럼명을 따옴표(")로 감싸기 (예: select "column" from tab)

Mysql: 컬럼명을 TAB 키 위에 있는 ` 키 ( Single quotation )로 감싸기

 

13. 저장프로시저 있는지 여부 파악해서 Create 하기

Oracle: CREATE OR REPLACE PROCEDURE 프로시저명

Mysql: DROP PROCEDURE IF EXISTS 프로시저명; 을 한 뒤에 CREATE PROCEDURE 프로시저명

 

14. 페이징처리가 다름

ORACLE은 ROWNUM을 이용하여 WHERE에서 BETWEEN으로 1~10번째자료를 나타내고,

MYSQL은 LIMIT를 사용하여 1~10번째자료를 나타냄

Oracle : SELECT * FROM ( SELECT ROWNUM , A.* FROM (SELECT * FROM KGON) A )WHERE ROWNUM BETWEEN 0 AND 10

Mysql : SELECT * FROM KGON LIMIT 0, 10

 

계속 업데이트....

 

 

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

'Database' 카테고리의 다른 글

SQL - JOIN  (0) 2021.05.23
DB - 데이터베이스 관련 용어 정리  (0) 2021.05.18
DB - Oracle SQL SELECT 쿼리 실행 순서  (0) 2021.05.12
DB - Transaction 정리  (0) 2021.05.01
DB - MySql 명령어  (0) 2021.04.28

댓글