Database

[Database] MySQL to Oracle

quedevel 2021. 7. 31. 17:16
728x90
반응형

MySQL to Oracle

MySQL 5.6 version → Oracle 12 version

현재 MySQL을 Oracle로 변경하는 작업을 진행중이다. 

* 어려운 쿼리는 없었으나 수정된 내용에 대해서 기록을 남기려고 한다.

1. MySQL 의 GROUP BY는 Alias 명을 통해서도 가능하며 선언한 컬럼을 MAX, MIN, SUM 등의 함수로 쓰지 않아도 Default로 MIN 값으로 적용된다.

ex ) 아래 처럼 MySQL은 Alias명으로 바로 GROUP BY를 처리할 수 있으며 선언하지 않은 ID는 Defalut로 MIN 값으로 적용된다.

-- MySQL
SELECT ID, 
    NAME AS NM, 
    SUM(SCORE) AS SUM 
  FROM STUDENTS 
 GROUP BY NM;

-- Oracle
SELECT MIN(ID) AS ID,
    NM,
    SUM(SCORE) AS SUM
  FROM (SELECT ID, 
            NAME AS NM,
            SCORE
          FROM STUDENTS)
 GROUP BY NM;

 

2. Spring MyBatis 설정시 Alias에 대한 설정을 넣어주지 않고 Query 실행시 리턴 타입이 Map이라면 MySQL과 Oracle에 차이가 발생한다.

ex ) MySQL로 Query를 작성 했을때, Alias를 소문자 또는 카멜케이스를 적용했다면 리턴시 Map의 key값들은 그대로 적용되지만 Oracle은 key값들이 대문자로 적용된다. ( MyBatis의 셋팅 문제인지 version의 문제인지 아직 파악하지 못했다. )

따라서, 쿼리를 수정할 때 Alias에 ""을 넣어서 변경하도록 해야한다.

-- MySQL
SELECT NOW() AS date FROM DUAL;

-- Oracle
SELECT SYSDATE AS "date" FROM DUAL;
728x90
반응형

'Database' 카테고리의 다른 글

[Database] SQL vs NoSQL  (0) 2023.03.26
[Database] SQL Injection  (0) 2023.03.25
[Database] JOIN  (0) 2023.03.25
[Database] Key  (0) 2023.03.25
[Database] Oracle 12  (0) 2020.02.27