SQLite가 이해하는 SQL 문법

SQLite가 이해하는 SQL 문법

SQLite는 표준 SQL 대부분을 이해하지만 일부 기능은 생략하고, 동시에 SQLite만의 기능도 몇 가지 더해요. 이 문서는 SQLite가 SQL 언어의 어느 부분을 지원하고 어느 부분을 지원하지 않는지를 정확히 짚어주는 말 그대로의 기준점이에요. SQL 키워드 목록은 별도 문서로 따로 정리되어 있고, 문법의 정확한 모양은 다이어그램으로 확인할 수 있어요.

출처: SQL As Understood By SQLite

SQLite의 SQL 지원 범위

SQLite는 대부분의 표준 SQL 문법을 따르지만, 몇 가지는 일부러 빼기도 해요. 예를 들어 전체 ALTER TABLE 기능의 일부, RIGHT JOIN/FULL OUTER JOIN, GRANT/REVOKE 같은 권한 문법은 지원하지 않아요. 대신 표준에 없는 유용한 기능도 있는데, UPSERT(INSERT ... ON CONFLICT), RETURNING 절, WITH(CTE), 윈도우 함수 같은 것들이 그런 예예요. 실무에서 "이 문법 쓰면 되나?" 하고 헷갈릴 때 이 페이지가 판정 기준이 돼요.

지원하는 주요 토픽

  • 데이터 정의: CREATE TABLE, CREATE INDEX, CREATE VIEW, CREATE TRIGGER, CREATE VIRTUAL TABLE, 그리고 DROP 계열 전체
  • 데이터 조작: SELECT, INSERT, UPDATE, DELETE, REPLACE, 그리고 UPSERT
  • 트랜잭션: BEGIN TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT, RELEASE
  • 스키마 관리: ALTER TABLE, ATTACH DATABASE, DETACH DATABASE, ANALYZE, REINDEX, VACUUM
  • 표현식과 함수: 표현식 일반, 집계 함수, 코어 함수, 날짜·시간 함수, JSON 함수, 수학 함수, 윈도우 함수
  • 기타: EXPLAIN, INDEXED BY, ON CONFLICT, PRAGMA, RETURNING, 주석

이 문서는 각 문법의 상세 페이지로 가는 일종의 인덱스 역할을 해요. 실제 사용법이나 세부 규칙은 해당 항목의 개별 문서에서 확인하는 게 더 빠르죠.

문장 나열과 준비 함수

SQLite의 C 인터페이스(sqlite3_prepare_v2(), sqlite3_prepare(), sqlite3_exec() 등)는 세미콜론으로 구분된 SQL 문장 목록(sql-stmt-list)을 받아요. 각 문장은 하나의 sql-stmt로 표현되며, 준비 단계에서 하나씩 컴파일돼요. 그래서 한 번 호출로 여러 문장을 실행할 수도 있어요.

더 알아보기