본문 바로가기
Database

SQLite 데이터베이스에서 지원하는 주요 필드 타입(Data Types)

by ERLite 2026. 2. 27.

SQLite는 다른 RDBMS와 달리 동적 타입 시스템(dynamic typing)을 사용합니다. 즉, 컬럼에 선언된 타입보다 실제 저장되는 값의 형태에 따라 데이터 타입이 결정됩니다. 하지만 기본적으로 SQLite는 값을 다음 5가지 저장 클래스(Storage Classes)로 분류합니다:

📌 SQLite 주요 데이터 타입(Storage Classes)

데이터 타입설명
NULL 값이 없음을 의미
INTEGER 부호 있는 정수. 크기에 따라 1, 2, 3, 4, 6, 또는 8바이트로 저장
REAL 부동소수점 숫자. 8바이트 IEEE 754로 저장
TEXT 문자열 데이터. UTF-8, UTF-16BE, UTF-16LE 인코딩 지원
BLOB Binary Large Object. 입력된 데이터를 변환 없이 그대로 저장

🔎 특징

  • 유연성: 컬럼에 VARCHAR(50) 같은 타입을 선언해도 실제로는 TEXT로 저장됩니다.
  • 타입 결정 방식: 값이 작은 따옴표 'abc'로 감싸져 있으면 TEXT, 소수점 없는 숫자는 INTEGER, 소수점이 있으면 REAL로 자동 분류됩니다.
  • 타입 친화성(Type Affinity): SQLite는 선언된 타입 이름을 기반으로 TEXT, NUMERIC, INTEGER, REAL, BLOB 중 하나의 "친화성"을 부여합니다. 예: VARCHAR → TEXT affinity.

👉 요약하면, SQLite는 NULL, INTEGER, REAL, TEXT, BLOB의 5가지 기본 데이터 타입을 지원하며, 다른 SQL 데이터베이스처럼 엄격한 타입 제약은 두지 않습니다.

🔎 타입 친화성(Type Affinity)

SQLite는 엄격한 타입 제약 대신 타입 친화성(Affinity) 개념을 사용합니다. 컬럼에 선언된 타입 이름을 기반으로 다음 중 하나로 매핑됩니다:

  • TEXT affinity → CHAR, VARCHAR, TEXT, CLOB 등
  • NUMERIC affinity → NUMERIC, DECIMAL, BOOLEAN, DATE, DATETIME 등
  • INTEGER affinity → INT, INTEGER, BIGINT 등
  • REAL affinity → REAL, DOUBLE, FLOAT 등
  • BLOB affinity → BLOB 또는 타입 미지정

📝 예제

sql
CREATE TABLE sample (
    id INTEGER PRIMARY KEY,
    name TEXT,
    price REAL,
    created_at DATETIME,
    data BLOB
);
  • id → INTEGER affinity
  • name → TEXT affinity
  • price → REAL affinity
  • created_at → NUMERIC affinity (실제로는 TEXT/REAL/INTEGER로 저장 가능)
  • data → BLOB affinity