본문 바로가기
DataBase

oracle DBMS와 MySQL DBMS의 문법차이

by 스파이디웹 2020. 4. 16.
728x90

[DEPT이라는 테이블이 있으며 컬럼명에는 USER_ID, REG_DATE, UDP_DATE가 있습니다.]

 

1. NULL값확인함수가 다릅니다.

즉, 컬럼값에 NULL이면 다른값으로 표시해주는 함수사용법이 다릅니다.

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

ex) (ORACLE) SELECT NVL(USER_ID,'') FROM DEPT

ex) (MYSQL ) SELECT IFNULL(USER_ID,'') FROM DEPT

 

2. 현재날짜시간 확인하는 방법이 다릅니다.

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

ex) (ORACLE) SELECT SYSDATE FROM DUAL;

ex) (MYSQL ) SELECT NOW() FROM DUAL;

 

3. 날짜포멧 변환방법이 다릅니다.

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

ex) (ORACLE) SELECT TO_CHAR(REG_DATE, 'YYYYMMDD HH24MISS') FROM DUAL;

ex) (MYSQL ) SELECT DATE_FORMAT(REG_DATE, '%Y%m%d%H%i%s') FROM DUAL;

[형식에 쓰는 영문자는 대소문자에 따라 다른값이 나올 수 있습니다.]

[%Y는 4자리년도(2017) , %y는 2자리년도(17)]

 

4. 요일변환의 숫자범위가 다릅니다.

ORACLE은 일,월,화,수,목,금,토를 1,2,3,4,5,6,7로 인식합니다.

MYSQL은 일,월,화,수,목,금,토를 0,1,2,3,4,5,6으로 인식합니다.

그렇기 때문에 요일 계산하는 경우 조심해야합니다.

오늘이 수요일인경우 ORACLE에서는 4가 반환되고 MYSQL에서는 3이 반환되기 떄문에 요일변환 사용하는 부분을 잘 확인해야합니다.

[보통 JAVASCRIPT에서 일,월,화,수,목,금,토를 0,1,2,3,4,5,6으로 쓰기 때문에 ORACLE인경우 결과값을 -1해서 반환하는 경우가 많습니다.]

ex) (ORACLE) SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL; [결과값: 오늘이 수요일인경우 4를 반환]

ex) (MYSQL ) SELECT DATE_FORMAT(NOW(), '%w') FROM DUAL; [결과값: 오늘이 수요일인경우 3을 반환]

 

5. 문자와 문자 합치는 방법이 다릅니다.

ORACLE에서는 문자와 문자를 합칠때 '||'을 사용합니다.

MYSQL에서는 문자와 문자를 합칠때 CONCAT()함수를 사용합니다.

ex) (ORACLE) SELECT USER_ID FROM DEPT WHERE USER_ID LIKE '%' || 'DEPT' || '%'

ex) (MYSQL ) SELECT USER_ID FROM DEPT WHERE USER_ID LIKE CONCAT('%','DEPT','%')

 

6. 형변환방법이 다릅니다.

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

ex) (ORACLE) SELECT TO_CHAR(632) FROM DUAL

ex) (MYSQL ) SELECT CAST(1234 AS CHAR) FROM DUAL

 

7. 페이징처리가 다릅니다.

ORACLE은 ROWNUM을 이용하여 WHERE에서 BETWEEN으로 1~10번째자료를 나타냅니다.

MYSQL은 LIMIT를 사용하여 1~10번째자료를 나타냅니다.

ex) (ORACLE) SELECT * FROM ( SELECT ROWNUM , A.* FROM (SELECT * FROM DEPT) A )WHERE ROWNUM BETWEEN 0 AND 10

ex) (MYSQL ) SELECT * FROM DEPT LIMIT 0, 10

 

8. 시퀀스사용시 다음번호 불러오는 방법이 다릅니다.

ORACLE은 시퀀스명.NEXTVAL을 사용하지만

MYSQL은 시퀀스명.CURRVAL를 사용합니다.

 

9.데이터베이스 생성 방법

ORACLE은 기본적으로 사용자(오너)추가=데이터베이스 추가이다. (엄밀히 따지면 오너와 스키마를 같다고 보고, 데이터베이스는 따로 있다고함)

 

MYSQL은 데이터베이스를 생성할 수 있다.

728x90

'DataBase' 카테고리의 다른 글

JPA이란?  (0) 2020.06.19
MySQL에 날짜입력하기  (0) 2020.06.05
데이터베이스 프로그래밍  (1) 2020.03.06
SQL 고급  (0) 2020.03.03
SQL기초  (0) 2020.02.26

댓글