728x90

드디어 힘들게 취업을 했다.ㅠㅠ

지금까지는 MySQL만 사용했었는데 회사에서는 Oracle을 사용한다.

MySQL과 Oracle에는 약간의 문법 차이가 있는데 공부도 할겸 비교해보자.

데이터 타입

MySQL

CREATE TABLE mysql (
    id INT,
    name VARCHAR(50)
);

Oracle

CREATE TABLE oracle (
    id NUMBER,
    name VARCHAR2(50)
);
  • MySQL
    • 정수형 : INT
    • 가변 길이 정수형 : VARCHAR
  • Oracle
    • 정수형 : NUMBER
    • 가변 길이 정수형 : VARCHAR2

 

날짜 시간

MySQL

SELECT * 
FROM mysql 
WHERE created_at > '2023-06-28';

Oracle

SELECT * 
FROM oracle 
WHERE created_at > TO_DATE('2021-06-28', 'YYYY-MM-DD');
  • MySQL : 날짜와 시간을 문자열만으로 비교할 수 있다.
  • Oracle : TO_DATE 함수를 사용해서 문자열을 날짜로 변환해야 날짜와 시간을 비교할 수 있다.

 

행 개수 제한

MySQL

SELECT * 
FROM mysql 
LIMIT 10;

Oracle

SELECT *
FROM (
	SELECT *
    FROM oracle
)
WHERE ROWNUM <= 10
  • MySQL : LIMIT 함수를 사용해서 행 개수를 제한
  • Oracle : 서브쿼리와 ROWNUM을 사용해서 행 개수를 제한 (벌써 MySQL이 그리워진다..)

 

인덱스 자동 증가

MySQL

CREATE TABLE mysql (
	id INT AUTO_INCREMENT,
    name VARCHAR(50)
);

Oracle

CREATE TABLE oracle (
    id NUMBER,
    name VARCHAR2(50)
);
CREATE SEQUENCE oracle_seq START WITH 1 INCREMENT BY 1;
  • MySQL : AUTO_INCREMENT를 사용해서 자동 증가 기능을 제공
  • Oracle : SEQUENCE를 생성해서 Auto Increment 기능을 직접 구현 

 

문자열 연결

MySQL

SELECT CONCAT('dev', ' ', 'bean') AS full_name
FROM mysql

Oracle

SELECT 'dev' || ' ' || 'bean' AS full_name
FROM oracle
  • MySQL : CONCAT 함수를 사용해서 문자열을 연결
  • Oracle : || 연산자를 사용해서 문자열을 연결

 

NULL 값 처리

MySQL

SELECT IFNULL(column_name, '0')
FROM mysql

Oracle

SELECT NVL(column_name, '0')
FROM oracle
  • MySQL : IFNULL 함수를 사용해서 NULL 처리
  • Oracle : NVL 함수를 사용해서 NULL 처리
728x90
Cold Bean