SQLite 튜토리얼: Oracle 개발자를 위한 핵심 차이점 정리

SQLite는 가볍고 단순한 구조 덕분에 다양한 환경에서 널리 쓰입니다. 하지만 Oracle SQL에 익숙한 개발자라면 몇 가지 문법 차이 때문에 혼란스러울 수 있습니다. 이번 튜토리얼에서는 WITH 절, DECODE 함수, ROWNUM, 버전 확인, OUTER JOIN을 중심으로 살펴봅니다.
1. WITH 절 (CTE)
SQLite에서도 공통 테이블 표현식(CTE)를 지원합니다.
sql
WITH recent_orders AS (
SELECT *
FROM orders
WHERE order_date > '2026-01-01'
)
SELECT customer_id, COUNT(*)
FROM recent_orders
GROUP BY customer_id;
👉 Oracle과 거의 동일하게 사용할 수 있습니다.
2. DECODE 함수 대체
Oracle의 DECODE는 SQLite에 없습니다. 대신 CASE 문을 사용하세요.
sql
SELECT
CASE status
WHEN 'A' THEN 'Active'
WHEN 'I' THEN 'Inactive'
ELSE 'Unknown'
END AS status_text
FROM users;
👉 CASE 문이 더 범용적이고 가독성도 좋습니다.
3. ROWNUM 대신 쓰는 방법
SQLite에는 ROWNUM이 없습니다. 대신 두 가지 방법을 씁니다.
(1) LIMIT / OFFSET
sql
SELECT *
FROM users
LIMIT 10 OFFSET 20; -- 21번째 행부터 10개
(2) ROW_NUMBER() 윈도우 함수
sql
SELECT ROW_NUMBER() OVER (ORDER BY id) AS rn, name
FROM users;
👉 SQLite 3.25.0 이상에서 지원됩니다.
4. SQLite 버전 확인
버전 확인은 간단합니다.
- SQL 쿼리:
-
sql
SELECT sqlite_version(); - CLI:
-
bash
sqlite3 --version - Python:
-
python
import sqlite3 print(sqlite3.sqlite_version)
5. OUTER JOIN
SQLite는 LEFT OUTER JOIN만 지원합니다.
sql
SELECT u.id, u.name, o.order_date
FROM users u
LEFT OUTER JOIN orders o
ON u.id = o.user_id;
- RIGHT OUTER JOIN → 테이블 순서를 바꿔서 LEFT JOIN으로 대체
- FULL OUTER JOIN → LEFT JOIN과 RIGHT JOIN을 UNION으로 합쳐서 구현
마무리
Oracle에서 SQLite로 넘어올 때 가장 많이 부딪히는 차이점들을 정리했습니다.
- WITH 절은 그대로 사용 가능
- DECODE는 CASE로 대체
- ROWNUM은 LIMIT/OFFSET 또는 ROW_NUMBER()
- 버전 확인은 sqlite_version()
- OUTER JOIN은 LEFT만 지원, FULL은 UNION으로 구현
👉 이 튜토리얼을 따라가면 Oracle 개발자도 SQLite 환경에서 빠르게 적응할 수 있습니다.
반응형
'파이썬 스크립트' 카테고리의 다른 글
| 네이버 맛집 정보 수집 + 소형 AI JSON 변환 기획서 (1) | 2026.07.21 |
|---|---|
| Python으로 파일에서 특정 단어 찾기와 치환하기 (0) | 2026.07.07 |
| 블로그 이전 완료... (1) | 2026.06.11 |
| Python에서 5100개 키워드 포함 여부 빠르게 검사하기 (1) | 2026.05.14 |
| 자동 글쓰기로 티스토리와 네이버 블로그을 동시에 키워 보겠습니다. (0) | 2026.03.25 |