Bab 1 Pengenalan SQLite
Kenali SQLite: pustaka database SQL serverless, tanpa konfigurasi, yang menyimpan seluruh data dalam satu berkas.
Buka → # Sejarah dan Filosofi SQLiteTelusuri asal-usul SQLite tahun 2000 dan prinsip desain yang membuatnya tetap ringkas, andal, dan bebas lisensi.
Buka → # Kapan Menggunakan SQLitePelajari skenario tempat SQLite unggul dan situasi yang lebih cocok ditangani database client/server.
Buka → # SQLite vs Database ServerBandingkan arsitektur SQLite dengan database client/server seperti PostgreSQL dan MySQL sebelum memilih.
Buka → # Arsitektur SQLiteTelusuri perjalanan sebuah query dari tokenizer hingga virtual machine, b-tree, pager, dan OS interface SQLite.
Buka → # Format Berkas DatabaseBedah isi berkas database SQLite: header, halaman, b-tree, dan berkas pendamping journal serta WAL.
Buka →Bab 2 Instalasi dan Alat-Alat
Pasang SQLite di Ubuntu/Debian, macOS, dan Windows, lalu pahami perbedaan versi antar sumber instalasi.
Buka → # Memverifikasi Instalasi SQLitePeriksa instalasi SQLite lewat which, sqlite3 --version, query sqlite_version(), dan modul sqlite3 Python.
Buka → # Menggunakan sqlite3 CLIJalankan shell interaktif sqlite3, pahami prompt sqlite> dan ...>, eksekusi query, serta keluar dari sesi.
Buka → # Membuat Database PertamaPraktik membuat database toko.db: membuat tabel, memasukkan data, lalu membacanya kembali dari disk.
Buka → # Dot Commands pada sqlite3 CLIGunakan dot commands sqlite3 seperti .help, .tables, .schema, .mode, dan .headers untuk mengatur sesi kerja.
Buka → # Alat GUI untuk SQLiteKenali alat GUI populer untuk SQLite: DB Browser, SQLiteStudio, DBeaver, ekstensi VS Code, dan SQLite Online.
Buka →Bab 3 SQL Dasar
Kenali sifat deklaratif SQL beserta keluarga statement DDL, DML, dan DQL yang dipakai untuk berbicara dengan SQLite.
Buka → # Membuat Tabel dengan CREATE TABLEBangun tabel pertama dengan CREATE TABLE: definisi kolom, IF NOT EXISTS, dan pemeriksaan struktur lewat .schema.
Buka → # Tipe Data dan Type AffinityPahami lima storage class, aturan type affinity yang fleksibel, dan STRICT table untuk pengetikan yang kaku.
Buka → # Constraint pada TabelTerapkan PRIMARY KEY, NOT NULL, UNIQUE, DEFAULT, dan CHECK supaya engine menolak data yang tidak valid.
Buka → # Memasukkan Data dengan INSERTIsi tabel dengan INSERT: satu baris, banyak baris sekaligus, kolom yang diberi DEFAULT, hingga INSERT dari SELECT.
Buka → # Membaca Data dengan SELECTBaca data dengan SELECT: memilih kolom, ekspresi dan alias, ORDER BY, LIMIT OFFSET, serta DISTINCT.
Buka → # Memfilter Data dengan WHEREFilter baris dengan WHERE: operator perbandingan, AND OR NOT, BETWEEN, IN, dan cara aman menangani NULL.
Buka → # Mengubah dan Menghapus DataUbah dan hapus baris dengan UPDATE serta DELETE, ukur efeknya lewat changes(), dan hindari lupa WHERE.
Buka → # Mengubah Struktur TabelKembangkan tabel lewat ALTER TABLE: tambah kolom, ganti nama, DROP COLUMN, DROP TABLE, dan pola migrasi 12 langkah.
Buka →Bab 4 Query Lanjutan
Gunakan operator IN, BETWEEN, dan IS NULL untuk menyaring daftar nilai, rentang, dan data yang kosong.
Buka → # Pencarian Pola dengan LIKE dan GLOBCari pola teks dengan wildcard LIKE dan GLOB serta ESCAPE untuk karakter khusus, lengkap dengan perbandingannya.
Buka → # Fungsi AgregatRingkas banyak baris menjadi satu nilai dengan COUNT, SUM, AVG, MIN, dan MAX beserta jebakan NULL-nya.
Buka → # Mengelompokan Hasil dengan GROUP BY dan HAVINGKelompokkan baris dengan GROUP BY, saring kelompok dengan HAVING, dan pahami perbedaan tugasnya dengan WHERE.
Buka → # Menggabungkan Tabel dengan JOINGabungkan data dari beberapa tabel dengan INNER JOIN, LEFT JOIN, self-join, dan CROSS JOIN beserta jebakannya.
Buka → # SubquerySusun query di dalam query: scalar subquery, subquery di FROM, IN, correlated subquery, dan EXISTS.
Buka → # Common Table ExpressionsSusun query bertingkat yang mudah dibaca dengan WITH, dari CTE sederhana hingga recursive CTE pembangkit deret.
Buka → # Window FunctionsHitung peringkat, running total, dan selisih antar baris dengan window functions tanpa meringkas baris.
Buka → # Operasi Set: UNION, INTERSECT, EXCEPTGabungkan hasil beberapa query dengan UNION, UNION ALL, INTERSECT, dan EXCEPT beserta aturan kolomnya.
Buka → # Ekspresi CASEBentuk logika kondisional di dalam SQL dengan ekspresi CASE untuk label, urutan khusus, hingga pivot laporan.
Buka →Bab 5 Desain Database
Pecah tabel raksasa yang penuh duplikasi menjadi tabel kecil bebas anomali lewat aturan 1NF, 2NF, dan 3NF.
Buka → # Merancang Relasi One-to-ManyRancang relasi pelanggan ke pesanan: penempatan kolom foreign key, query JOIN, dan bahaya baris yatim.
Buka → # Merancang Relasi Many-to-ManyHubungkan pesanan dan produk lewat tabel junction detail_pesanan dengan composite primary key dan JOIN tiga tabel.
Buka → # Foreign KeyAktifkan penegakan foreign key per koneksi dan kendalikan nasib baris anak dengan aksi ON DELETE dan ON UPDATE.
Buka → # Index dan Pencarian CepatBuat index agar pencarian 100 ribu baris berhenti memindai seluruh tabel, dan kenali kapan index justru tidak membantu.
Buka → # ViewSimpan query JOIN yang panjang sebagai view bernama, query ulang dengan WHERE, dan pahami batasan read-only-nya.
Buka → # Generated ColumnsHitung subtotal dan harga akhir otomatis lewat GENERATED ALWAYS AS, pahami beda VIRTUAL dan STORED beserta larangannya.
Buka →Bab 6 Fungsi dan Fitur Lanjutan
Kuasai fungsi scalar bawaan SQLite untuk angka, teks, logika NULL, dan format keluaran langsung di dalam query.
Buka → # Bekerja dengan Tanggal dan WaktuKelola tanggal dan waktu di SQLite: konvensi penyimpanan, fungsi datetime, modifier, strftime, dan validasinya.
Buka → # Memproses JSON dalam SQLiteBaca, bangun, dan ubah dokumen JSON langsung di query: json_extract, operator ->, json_each, dan teman-temannya.
Buka → # UPSERT dan Penanganan KonflikAtasi konflik UNIQUE dengan INSERT OR IGNORE, OR REPLACE, dan UPSERT modern ON CONFLICT DO UPDATE.
Buka → # TriggerOtomatiskan audit log, updated_at, validasi, dan view yang bisa ditulis dengan trigger SQLite.
Buka → # Full-Text Search dengan FTS5Bangun mesin pencari kata utuh di SQLite dengan FTS5: MATCH, bm25, snippet, NEAR, dan tokenizer unicode61.
Buka →Bab 7 Transaksi dan Konsistensi
Buka transaksi dengan BEGIN, akhiri dengan COMMIT, atau buang seluruh perubahan dengan ROLLBACK.
Buka → # Memahami ACIDBedah empat jaminan ACID SQLite dan cara engine menjaganya lewat journal, constraint, locking, dan fsync saat COMMIT.
Buka → # Autocommit dan Perilaku DefaultPahami mode autocommit bawaan SQLite, cara beralih ke transaksi manual, dan dampak komit kecil terhadap performa.
Buka → # Isolation dan LockingPahami kunci level database SQLite, galat database is locked, serta peran busy_timeout dan BEGIN IMMEDIATE.
Buka → # SavepointBuat titik pulih di dalam transaksi dengan SAVEPOINT, ROLLBACK TO, dan RELEASE untuk membatalkan perubahan sebagian.
Buka → # Journal Modes dan WALBedah rollback journal, daftar journal_mode, cara kerja WAL, checkpoint, dan pengaturan synchronous.
Buka →Bab 8 Performa dan Optimasi
Baca rencana eksekusi query: SCAN, SEARCH, TEMP B-TREE, subquery berkorelasi, dan co-routine.
Buka → # Strategi IndexRancang index yang tepat: urutan kolom komposit, covering index, partial, expression, dan biaya menulisnya.
Buka → # ANALYZE dan Statistik Query PlannerLengkapi query planner dengan statistik sqlite_stat1 supaya pemilihan index berbasis data, bukan tebakan.
Buka → # Konfigurasi dengan PRAGMAAtur perilaku SQLite lewat PRAGMA: synchronous, journal_mode, cache_size, busy_timeout, dan mode aman.
Buka → # VACUUM dan Maintenance DatabaseKembalikan ruang setelah DELETE dengan VACUUM, pahami auto_vacuum, REINDEX, dan PRAGMA optimize.
Buka → # Mengoptimalkan Query LambatTerapkan metode ukur, baca rencana, hipotesis, perbaiki, ukur ulang pada dua studi kasus query lambat nyata.
Buka →Bab 9 Keamanan SQLite
Pahami cara kerja SQL injection lewat query login yang dirakit string, lalu tutup celahnya dengan query berparameter.
Buka → # Keamanan Berkas DatabaseBatasi akses ke berkas database dengan izin berkas yang ketat, termasuk berkas samping WAL dan journal.
Buka → # Enkripsi DatabasePahami opsi enkripsi SQLite: SEE, SQLCipher, enkripsi filesystem, dan enkripsi kolom berdasarkan model ancaman.
Buka → # Praktik Aman KonfigurasiTerapkan konfigurasi aman: hak akses minimal, URI mode baca-saja, batas kepercayaan berkas SQL, dan PRAGMA yang relevan.
Buka →Bab 10 Administrasi Database
Amankan database dengan .backup, VACUUM INTO, dan .dump, pahami risiko salin berkas langsung, serta uji restore.
Buka → # Export dan Import DataPindahkan data lewat CSV dan JSON dengan .mode, .once, dan .import, serta hindari jebakan type affinity saat import.
Buka → # Integrity Check dan PerbaikanDeteksi kerusakan dengan integrity_check, quick_check, dan foreign_key_check, lalu selamatkan data dengan .recover.
Buka → # Migrasi SkemaKelola perubahan skema lewat migrasi bernomor yang tercatat di schema_migrations plus resep resmi SQLite.
Buka → # Monitoring dan StatistikPantau ukuran berkas, halaman, penggunaan per tabel dengan dbstat, dan statistik query planner lewat skrip rutin.
Buka →Bab 11 SQLite dengan Python
Kenali modul sqlite3 bawaan Python: periksa versi, jalankan program pertama dengan :memory:, lalu simpan data ke berkas.
Buka → # Koneksi dan CursorBedah dua objek inti modul sqlite3: Connection mengelola sesi dan transaction, Cursor mengeksekusi query dan hasilnya.
Buka → # Query BerparameterKirim nilai ke query lewat placeholder ? dan :nama, pakai executemany, baca lastrowid dan rowcount, hindari jebakannya.
Buka → # Transaksi dengan PythonPahami transaction implisit sqlite3, atur commit dan rollback, blok with, serta mode autocommit dengan BEGIN eksplisit.
Buka → # Row FactoryUbah hasil query dari tuple menjadi sqlite3.Row atau dict agar kode membaca kolom berdasarkan nama, bukan posisi angka.
Buka → # Penanganan Error sqlite3Kenali hierarki exception sqlite3, tangkap IntegrityError dan OperationalError, dan atasi database is locked.
Buka → # Pola Akses DataSusun lapisan akses data sederhana: satu modul get_connection dan fungsi repository dengan query berparameter.
Buka → # Testing DatabaseUji kode database dengan pytest: fixture :memory: per test, helper data, pytest.raises, dan tmp_path untuk berkas.
Buka →Bab 12 SQLite di Produksi
Pola produksi SQLite yang terbukti: embedded dan IoT, mobile, desktop, website, dan format berkas aplikasi.
Buka → # Strategi ConcurrencyKelola satu penulis di produksi: jalur tulis tunggal, WAL dan busy_timeout, retry, batching, dan transaksi pendek.
Buka → # Backup di ProduksiBackup SQLite tanpa menghentikan aplikasi: cron dengan rotasi, verifikasi otomatis, dan streaming WAL Litestream.
Buka → # Kapan Pindah dari SQLiteSinyal jujur untuk pindah atau bertahan di SQLite, risiko database server, dan jalur migrasi praktisnya.
Buka →Bab 13 Proyek SQLite
Bangun database katalog perpustakaan: desain skema, data awal, query laporan, hingga view dan index.
Lihat proyek → # Proyek: Pencatat Keuangan PribadiBangun aplikasi pencatat keuangan dengan Python dan SQLite: tabel, CRUD CLI, laporan bulanan, testing.
Lihat proyek → # Proyek: Analisis PenjualanAnalisis data penjualan dengan SQLite: skema, import CSV, query analisis, hingga laporan dan eksport.
Lihat proyek →