Materi
Setiap atribut butuh tipe data. SQLite berbeda dari kebanyakan basis data: tipe kolom hanyalah afinitas, yaitu tipe yang dianjurkan, bukan diwajibkan. Ada lima afinitas: TEXT, NUMERIC, INTEGER, REAL, dan BLOB. Kolom berafinitas INTEGER atau NUMERIC mengubah teks yang berbentuk bilangan bulat menjadi INTEGER sebelum menyimpannya, sehingga nomor telepon 0812345 di kolom INTEGER tersimpan sebagai 812345. Nomor HP, kode pos, dan nomor induk karena itu disimpan sebagai TEXT: angka yang tidak pernah dijumlahkan bukan bilangan.
SQLite juga tidak punya tipe Boolean dan tipe tanggal tersendiri. Nilai benar-salah disimpan sebagai bilangan bulat, dan kata kunci TRUE serta FALSE hanyalah ejaan lain untuk 1 dan 0. Tanggal disimpan sebagai TEXT dengan format ISO 8601 (YYYY-MM-DD), sebagai REAL, atau sebagai INTEGER; format teks ISO tetap terurut benar ketika diurutkan sebagai teks.
CREATE TABLE anggota (
id INTEGER PRIMARY KEY,
nama TEXT NOT NULL,
telepon TEXT, -- teks, supaya nol di depan tetap ada
aktif INTEGER NOT NULL, -- 1 = aktif, 0 = tidak
daftar TEXT NOT NULL -- '2026-05-17'
);NULL berarti nilainya belum diketahui, bukan nol dan bukan teks kosong; kelas SQL Lanjutan sudah membahas cara menyaringnya dengan IS NULL. Dalam desain, pertanyaannya: bolehkah kolom ini kosong? Batasan NOT NULL menolak baris yang kolomnya kosong saat INSERT atau UPDATE. Dokumentasi PostgreSQL menambahkan bahwa tipe data saja terlalu kasar untuk membatasi isi, misalnya harga yang harus positif; untuk itu ada batasan CHECK.