Lewati ke konten utama
  1. SQLite/

Panduan Lengkap SQLite untuk Pemula

Penulis
GezyTech
Menulis tentang AI, Linux, Server, Docker, dan teknologi lainnya.

TLDR
#

SQLite adalah database engine paling banyak dipakai di dunia. Beda dari MariaDB atau PostgreSQL, SQLite tidak punya server — seluruh database tersimpan dalam satu file biasa. Kamu cukup import sqlite3 (Python) atau install better-sqlite3 (Node.js) dan database langsung jalan. Artikel ini memandu dari nol sampai bisa dipakai di aplikasi.


Pendahuluan
#

Pernah butuh database tapi merasa install MySQL terlalu ribet? SQLite jawabannya. Ia embedded — menyatu langsung dengan aplikasi, tanpa proses server terpisah, tanpa port, tanpa user/password.

Kelebihan utama SQLite:

  • Tanpa server — tidak perlu instalasi dan konfigurasi layanan.
  • Satu file — seluruh database (tabel, index, data) dalam satu file .db.
  • Ringan — library utuh cuma beberapa ratus KB.
  • Nol konfigurasi — langsung pakai begitu file dibuat.
  • Handal — mendukung transaksi ACID penuh.

Karena itu SQLite jadi pilihan utama untuk aplikasi mobile (Android/iOS), aplikasi desktop, embedded system, browser (via WebAssembly), hingga aplikasi web skala kecil.


SQLite vs MariaDB: kapan pakai yang mana?
#

Kriteria SQLite MariaDB/PostgreSQL
Arsitektur Embedded (tanpa server) Client–server
Konfigurasi Nol Perlu setup layanan
Akses konkuren (tulis) Satu penulis pada satu waktu Banyak penulis bersamaan
Skala Kecil–menengah Menengah–besar
Penyimpanan Satu file Banyak file/direktori
Cocok untuk Mobile, desktop, prototype, web kecil Web produksi dengan banyak user

Aturan praktis: kalau aplikasi dipakai banyak user menulis data secara bersamaan lewat jaringan, pakai MariaDB. Kalau aplikasi lokal atau trafik rendah, SQLite sudah lebih dari cukup.


Prasyarat
#

Siapkan:

  1. Terminal (Linux/macOS/Windows).
  2. Python 3 (sudah menyertakan modul sqlite3 bawaan) — opsional untuk latihan via kode.
  3. SQLite CLI (sqlite3) — untuk latihan interaktif.

Instalasi SQLite CLI
#

Linux (Debian/Ubuntu)
#

sudo apt update
sudo apt install -y sqlite3

macOS
#

brew install sqlite

Verifikasi
#

sqlite3 --version

Membuat dan Membuka Database
#

Buka CLI dan buat database baru:

sqlite3 dataku.db

Baris ini langsung membuat file dataku.db (jika belum ada) dan masuk ke prompt sqlite>.

Perintah bantuan:

.help        -- daftar perintah titik (dot command)
.databases   -- lihat database aktif
.exit        -- keluar

Perlu diingat: perintah titik (.tables, .schema, dll.) adalah perintah CLI SQLite, bukan SQL. Sedangkan perintah SQL ditulis biasa dan diakhiri titik koma (;).


Membuat Tabel
#

Buat tabel siswa:

CREATE TABLE siswa (
  id        INTEGER PRIMARY KEY AUTOINCREMENT,
  nama      TEXT NOT NULL,
  kelas     TEXT NOT NULL,
  umur      INTEGER,
  email     TEXT UNIQUE
);

Beberapa tipe data umum SQLite:

Tipe Keterangan
INTEGER Bilangan bulat
REAL Bilangan desimal
TEXT Teks
BLOB Data biner
NULL Nilai kosong

SQLite memakai dynamic typing — kolom bisa menyimpan tipe apa pun, tapi sebaiknya tetap konsisten dengan tipe yang dideklarasikan.


CRUD Dasar
#

INSERT (menambah data)
#

INSERT INTO siswa (nama, kelas, umur, email)
VALUES ('Budi Santoso', '8A', 13, 'budi@contoh.id');

INSERT INTO siswa (nama, kelas, umur) VALUES
  ('Siti Aminah', '8A', 13),
  ('Andi Pratama', '8B', 14),
  ('Dewi Lestari', '8A', 13);

SELECT (membaca data)
#

SELECT * FROM siswa;
SELECT nama, kelas FROM siswa WHERE kelas = '8A';
SELECT COUNT(*) FROM siswa;

UPDATE (mengubah data)
#

UPDATE siswa SET umur = 14 WHERE nama = 'Budi Santoso';

DELETE (menghapus data)
#

DELETE FROM siswa WHERE nama = 'Andi Pratama';

Perintah CLI yang Berguna
#

Perintah Fungsi
.tables Lihat semua tabel
.schema siswa Lihat struktur pembuatan tabel
.mode column Tampilkan hasil dalam kolom rapi
.headers on Tampilkan baris header
.output file.txt Simpan hasil ke file
.dump Export seluruh database ke SQL
.backup nama.db Backup database

Contoh tampilan rapi:

.mode column
.headers on
SELECT * FROM siswa;

Backup dan Restore
#

Backup
#

sqlite3 dataku.db ".backup 'backup.db'"

atau export ke file SQL:

sqlite3 dataku.db .dump > backup.sql

Restore
#

sqlite3 dataku_baru.db < backup.sql

Integrasi dengan Python
#

Python punya modul sqlite3 bawaan — tidak perlu install apa pun.

import sqlite3

# Membuka koneksi (membuat file jika belum ada)
conn = sqlite3.connect("dataku.db")
cur = conn.cursor()

# Membuat tabel
cur.execute("""
CREATE TABLE IF NOT EXISTS siswa (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  nama TEXT NOT NULL,
  kelas TEXT NOT NULL
)
""")

# Insert data
cur.execute("INSERT INTO siswa (nama, kelas) VALUES (?, ?)", ("Budi", "8A"))

# Commit dan baca
conn.commit()
for row in cur.execute("SELECT * FROM siswa"):
    print(row)

conn.close()

Gunakan ? sebagai placeholder untuk mencegah SQL injection — jangan pernah menyusun query dengan string concatenation.


Integrasi dengan Node.js
#

Pakai better-sqlite3 (sinkron dan cepat):

npm install better-sqlite3
const Database = require('better-sqlite3');
const db = new Database('dataku.db');

db.exec(`
  CREATE TABLE IF NOT EXISTS siswa (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nama TEXT NOT NULL,
    kelas TEXT NOT NULL
  )
`);

const insert = db.prepare('INSERT INTO siswa (nama, kelas) VALUES (?, ?)');
insert.run('Budi', '8A');

const siswa = db.prepare('SELECT * FROM siswa').all();
console.log(siswa);

db.close();

Best Practices
#

  • Backup rutin — cukup salin file .db saat aplikasi berhenti menulis.
  • Gunakan transaksi untuk banyak operasi sekaligus agar lebih cepat dan aman.
  • Pakai placeholder (?) untuk mencegah SQL injection.
  • Jangan taruh database di repository — tambahkan *.db ke .gitignore.
  • WAL mode — aktifkan PRAGMA journal_mode=WAL; untuk performa baca-tulis bersamaan yang lebih baik.
PRAGMA journal_mode=WAL;

Troubleshooting
#

Error: database is locked
#

SQLite mengizinkan satu penulis pada satu waktu. Ini sering terjadi saat dua proses menulis bersamaan. Solusi: aktifkan WAL mode, atau pastikan koneksi sebelumnya sudah ditutup.

File .db tidak ada padahal sudah insert data
#

Kemungkinan transaksi belum di-commit. Pastikan memanggil conn.commit() (Python) atau db.exec('COMMIT').

Kolom tidak ditemukan
#

Periksa nama kolom dengan .schema nama_tabel. SQLite case-insensitive untuk nama tabel/kolom, tapi sebaiknya konsisten.


Keamanan
#

  • SQLite tidak punya autentikasi user — keamanan bergantung pada file system.
  • Batasi izin baca/tulis file .db hanya untuk user yang menjalankan aplikasi.
  • Hindari menyimpan data sensitif tanpa enkripsi; gunakan SQLCipher jika perlu enkripsi.
  • Selalu gunakan parameterized query untuk mencegah SQL injection.

Ringkasan Perintah
#

Membuat database dan tabel:

sqlite3 dataku.db
CREATE TABLE siswa (id INTEGER PRIMARY KEY, nama TEXT, kelas TEXT);
INSERT INTO siswa (nama, kelas) VALUES ('Budi', '8A');
SELECT * FROM siswa;

Backup:

sqlite3 dataku.db .dump > backup.sql

Dokumentasi resmi: sqlite.org