Oracle vs MySQL
DB 사용시 Oracle 을 더 많이 사용하여, 배웠던 MySQL 에 대해서는 좀 잊은 것 같다.
2 개의 문법 차이가 있기 때문에 정리할 필요성을 느꼈다.
1. 공백 치환 함수
Oracle : select NVL('컬럼명', '') from dual;
MySQL : select IFNULL('컬럼명', '') from dual;
2. 현재 날짜 및 시간
Oracle : sysdate
MySQL : now()
3. 날짜 Format
Oracle : to_char(sysdate, 'MMDDYYYYHH24MISS)
MYSQL : date_format(now(), '%Y%m%d%H%i%s')
-> 이곳에서 대문자 Y는 4자리 년도, 소문자 y는 2자리 년도로 인식한다.
4. 요일 관련 날짜 Format
Oracle : 요일을 1 ~ 7 로 인식 -> to_char(sysdate -1, 'D')
MySQL : 요일을 0 ~ 6 으로 인식 -> date_format(date_sub(now(), interval 1 day, '%w')
* JavaScript 가 0 ~ 6 으로 인식하므로 Oracle 에서 -1 을 해서 맞추는 경우가 많음
5. Like 절 '%' 사용
Oracle : Like '%'||'문자'||'%' 이런 식으로 컬럼명 앞뒤로 '%' 사용
MySQL : Like concat('문자', '%') 이런식으로 concat 사용
6. 형변환
Oracle : To_char, To_number 등 사용
MySQL : Cast
select to_char(123) from dual;
7. 대소문자 구분
Oracle : 구분없이 사용
MySQL : 기본적으로 구분하지만 설정에서 변경 가능
8. rownum
Oracle : where 절에서 rownum > 5 and rownum =< 15
MySQL : where 절을 하용하지 않고 limit 5, 15
9. 문자열 자르기
Oracle : substr(문자열, 1, 3)
MySQL : substring(문자열, 1, 3), left(문자열, 3), right(문자열, 3)
10. sequence 는 둘다 사용자 함수를 만들어서 아래와 같이 사용
Oracle : 시퀀스명.nextval
MySQL : 시퀀스명.currval
11. 문자열 병합 ( - 사용하여 문자열 연결 가정 )
Oracle : 문자열 ( 또는 컬럼 ) || '-'
MySQL : concat(문자열 ( 또는 컬럼 ), '-')
12. 예약어가 컬럼명일 경우
Oracle : 컬럼명을 "" 로 감싸기 (ex. select "column" from tab)
MySQL : 컬럼명을 Tab 키 위에 있는 ` 로 감싸기 (single 쿼테이션)
13. 저장 프로시저의 여부를 파악하여 create
Oracle : create or replace procedure 프로시저명
MySQL : drop procedure if exists 프로시저명; 을 한 뒤 create procedure 프로시저명
'DBMS > Oracle' 카테고리의 다른 글
[Oracle] SQL 튜닝_2. DBMS 아키텍처 (0) | 2019.11.23 |
---|---|
[Oracle] SQL 튜닝_1. 데이터 처리방식에 따른 성능 (0) | 2019.11.16 |
[Oracle] 오라클(Oracle) 조인(JOIN) 문법 (0) | 2019.02.18 |
[Oracle] 오라클(Oracle) DB 계정 생성 및 삭제 권한부여 비밀번호 변경 방법 (0) | 2019.02.18 |
[Oracle] 오라클(Oracle) 설치 및 다운로드(Download) (0) | 2019.02.18 |
최근댓글