1. MySQL – AUTO_INCREMENT
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
);
- 레코드 삽입 시 id 자동 증가
- 별도의 객체 불필요
2. Oracle – SEQUENCE + TRIGGER
Oracle 11g는 AUTO_INCREMENT가 없으므로, 아래 방식 사용
-- 시퀀스 생성
CREATE SEQUENCE user_seq START WITH 1 INCREMENT BY 1;
-- 테이블 생성
CREATE TABLE user (
id NUMBER PRIMARY KEY,
name VARCHAR2(100)
);
-- 트리거 생성
CREATE OR REPLACE TRIGGER trg_user_id
BEFORE INSERT ON user
FOR EACH ROW
BEGIN
IF :NEW.id IS NULL THEN
SELECT user_seq.NEXTVAL INTO :NEW.id FROM dual;
END IF;
END;
/
이제 INSERT 시 자동으로 번호가 들어갑니다.
📌 정리
- MySQL: AUTO_INCREMENT로 간단
- Oracle: 시퀀스+트리거 필요 (11g 이전 필수)
LIMIT vs ROWNUM – 결과 제한 처리
MySQL과 Oracle에서는 조회 결과를 제한하는 방식이 다릅니다.
1. MySQL – LIMIT
SELECT * FROM user LIMIT 10;
SELECT * FROM user LIMIT 10 OFFSET 20;
- 간단하고 직관적
2. Oracle – ROWNUM
SELECT * FROM user WHERE ROWNUM <= 10;
- OFFSET 개념 없음
- 페이징은 서브쿼리로 구현
SELECT * FROM (
SELECT a.*, ROWNUM rn
FROM (
SELECT * FROM user ORDER BY created_at DESC
) a
WHERE ROWNUM <= 30
) WHERE rn > 20;
📌 정리
- MySQL: LIMIT, OFFSET 간단
- Oracle: ROWNUM과 서브쿼리 조합 필요
'DB' 카테고리의 다른 글
| MySQL Oracle 조건문 /Insert 문/TOP N 행 / 집계문자열 정리 (1) | 2025.08.11 |
|---|---|
| MySQL 과 Oracle NULL 처리 – IFNULL vs NVL (1) | 2025.08.11 |
| 오라클 - SQL 집합 연산자 & DML 정리 (0) | 2025.06.11 |
| 오라클 DB 정리 – 정규화 · 참조 무결성 · 외래키 제약 · ENUM 대체 방법 (0) | 2025.06.11 |
| 오라클 책 정리 (0) | 2025.06.10 |