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
'SQL' 카테고리의 다른 글
DB - DB View에 대해서 알아보자 (0) | 2023.08.10 |
---|---|
Oracle - LISTAGG (특정 컬럼의 데이터들을 하나의 로우에 출력) (0) | 2023.07.24 |
SQL - 가독성 좋은 SQL 작성하기 (0) | 2023.06.23 |
SQL - MySQL 워크밴치에서 Foreign key 삭제하기 (0) | 2023.06.20 |
MySQL - 프로그래머스 164670. 조건에 맞는 사용자 정보 조회하기 (0) | 2023.05.29 |