Dokumentasi SQLite
Referensi SQLite yang ringkas dan penuh contoh. Baca konsepnya, lihat kodenya, lalu praktikkan di perjalanan Coddy.
Mulai kursusMemulai
- Apa Itu SQLiteSQLite adalah database SQL tanpa server berbasis file yang berjalan di dalam aplikasimu. Inilah penjelasan apa sebenarnya SQLite, bedanya dengan server database, dan kapan ia unggul.
- Daftar Perintah SQLPerintah SQL yang kamu pakai setiap hari, dikelompokkan menurut fungsinya (DDL, DML, DQL, dan TCL), masing-masing dengan contoh yang bisa kamu jalankan di SQLite.
- SQLite vs MySQLPerbedaan sebenarnya antara SQLite dan MySQL: arsitektur, konkurensi, tipe data, dan jenis proyek yang cocok untuk masing-masing.
- SQLite vs PostgresPerbedaan SQLite dan PostgreSQL yang sebenarnya: arsitektur, konkurensi, tipe data, dan jenis proyek yang paling cocok untuk masing-masing.
- Kapan Memakai SQLitePanduan praktis kapan SQLite adalah database yang tepat, dan kapan sebaiknya kamu memilih Postgres atau MySQL.
- Install SQLiteCara install SQLite di Windows, macOS, dan Linux: mendapatkan tool command line-nya, menambahkannya ke PATH, dan memastikan semuanya berjalan.
- CLI SQLiteCara memakai shell command line sqlite3: membuka database, menjalankan query, dot command, serta mengimpor atau mengekspor data tanpa meninggalkan terminal.
- Tool GUITur praktis tool GUI untuk membuka, menjelajahi, dan mengedit file database SQLite: DB Browser for SQLite, SQLiteStudio, dan viewer online.
- Membuat DatabaseCara membuat database SQLite: gambaran database sebagai file, perintah `sqlite3`, dan kenapa tidak ada pernyataan `CREATE DATABASE`.
- Database In-MemoryCara kerja database in-memory SQLite, kapan sebaiknya memakai `:memory:`, dan apa bedanya dengan database berbasis file yang bisa kamu simpan.
Tabel & Tipe
- CREATE TABLECara membuat tabel di SQLite: definisi kolom, constraint, IF NOT EXISTS, tabel sementara, dan CREATE TABLE AS SELECT.
- Tipe DataCara SQLite menyimpan nilai: lima storage class, kenapa tipenya dinamis, dan jebakan yang sering mengenai orang yang terbiasa dengan Postgres atau MySQL.
- Type AffinityCara kerja sistem type affinity di SQLite: lima affinity, aturan yang memilih salah satunya dari deklarasi kolommu, dan kenapa kolom INTEGER bisa menampung string.
- Tabel STRICTCara tabel STRICT di SQLite mematikan penyimpanan bertipe fleksibel, menolak nilai yang tidak cocok, dan memberimu pemeriksaan tipe yang mungkin sejak awal kamu harapkan.
- Primary KeyCara kerja primary key di SQLite: INTEGER PRIMARY KEY yang istimewa, key komposit, AUTOINCREMENT, dan keanehan-keanehan yang sering menjebak pemula.
- ROWIDApa sebenarnya ROWID di SQLite, kapan INTEGER PRIMARY KEY menjadikannya kolommu sendiri, dan kenapa tabel WITHOUT ROWID ada.
- NOT NULL & DefaultCara kerja NOT NULL dan DEFAULT di SQLite: apa yang sebenarnya dijaga, trik CURRENT_TIMESTAMP, dan jebakan saat menambahkannya ke tabel yang sudah ada.
- Constraint CHECKCara memakai constraint CHECK di SQLite untuk menegakkan aturan pada nilai kolom: pengecekan satu kolom, pengecekan banyak kolom, constraint bernama, dan jebakannya.
- Constraint UNIQUECara kerja constraint UNIQUE di SQLite: tingkat kolom, tingkat tabel, kunci komposit, keanehan NULL, dan apa yang harus dilakukan saat constraint itu gagal.
- DROP & ALTER TABLECara menghapus, mengganti nama, dan mengubah tabel di SQLite: apa yang didukung ALTER TABLE, apa yang tidak, dan trik membangun ulang tabel untuk perubahan yang tidak bisa dilakukannya.
Menambah & Mengubah Data
- INSERTCara kerja INSERT di SQLite: satu baris, banyak baris sekaligus, INSERT...SELECT, nilai default, serta modifier konflik OR IGNORE / OR REPLACE.
- Perintah SQL UPDATECara mengubah baris yang sudah ada di SQLite: sintaks UPDATE, klausa WHERE yang menjagamu tetap aman, update banyak kolom, dan UPDATE ... FROM untuk perubahan lintas tabel.
- DELETECara kerja DELETE di SQLite: menulis klausa WHERE yang aman, menghapus semua baris, menghapus berantai ke tabel terkait, dan mendapatkan kembali baris yang dihapus dengan RETURNING.
- UPSERTCara kerja UPSERT di SQLite: klausa ON CONFLICT, tabel excluded, DO NOTHING vs DO UPDATE, dan perbedaannya dengan INSERT OR REPLACE.
- Klausa RETURNINGCara kerja klausa RETURNING di SQLite: mengambil baris yang baru saja disentuh INSERT, UPDATE, atau DELETE tanpa query kedua.
- Impor CSVCara mengimpor file CSV ke SQLite memakai perintah .import: menangani header, tabel yang sudah ada, pemisah khusus, dan error yang paling umum.
- Ekspor DataCara mengekspor data dari SQLite: CSV dengan header, JSON, SQL dump lengkap, dan backup satu tabel memakai command-line shell sqlite3.
Query Data
- Dasar SELECTCara kerja pernyataan SELECT di SQLite: memilih kolom, menghitung ekspresi, memberi alias pada hasil, dan model berpikir di balik setiap query yang akan kamu tulis.
- Klausa WHERECara klausa WHERE memfilter baris di SQLite: operator perbandingan, AND/OR, LIKE, IN, BETWEEN, dan jebakan NULL yang menjerat semua orang.
- Operator & NULLCara operator SQLite bekerja dengan NULL: kenapa `=` dan `<>` tidak berperilaku seperti yang kamu kira, dan alat IS, IS NOT, COALESCE, serta IFNULL yang bisa diandalkan.
- ORDER BYCara kerja ORDER BY di SQLite: mengurutkan naik dan turun, menentukan urutan nilai yang sama dengan beberapa kolom, menangani NULL, dan pengurutan yang tidak membedakan huruf besar kecil.
- LIMIT & OFFSETCara kerja LIMIT dan OFFSET di SQLite: membatasi baris, melewati baris, pagination yang aman, dan jebakan performa yang perlu dihindari di tabel besar.
- DISTINCTCara kerja SELECT DISTINCT di SQLite: satu kolom, banyak kolom, penanganan NULL, COUNT(DISTINCT), dan kapan GROUP BY adalah pilihan yang lebih baik.
- Statement CASE SQLCara kerja CASE di SQLite: bentuk simple dan searched, memakainya di SELECT, ORDER BY, dan WHERE, serta kapan sebaiknya memakai IIF.
Fungsi & Agregat
- Fungsi StringFungsi string praktis di SQLite: penggabungan, SUBSTR, INSTR, REPLACE, TRIM, dan pola untuk membersihkan serta membentuk ulang teks di dalam query.
- Fungsi NumerikCara berhitung di SQLite: ROUND, ABS, CEIL, FLOOR, MOD, POWER, SQRT, RANDOM, dan jebakan pembagian integer yang pasti pernah menjebak semua orang.
- Tanggal & WaktuCara SQLite menyimpan dan mengolah tanggal: lima fungsi tanggal, format string, modifier, dan pilihan penyimpanan yang menjaga query-mu tetap cepat.
- Fungsi Agregat SQLCara fungsi agregat di SQLite meringkas banyak baris menjadi satu nilai: COUNT, SUM, AVG, MIN, MAX, GROUP_CONCAT, ditambah DISTINCT, FILTER, dan aturan NULL.
- GROUP BY & HAVINGCara GROUP BY mengelompokkan baris di SQLite, dan cara HAVING memfilter kelompok-kelompok itu setelah agregasi, dengan perbedaan WHERE dan HAVING yang dibuat konkret.
Relasi & Join
- Foreign KeyCara kerja foreign key di SQLite: mendeklarasikan REFERENCES, mengaktifkan penegakannya dengan PRAGMA, dan memilih perilaku ON DELETE yang tepat.
- INNER JOINCara kerja INNER JOIN di SQLite: model berpikirnya, klausa ON, join tiga tabel, dan jalan pintas USING.
- LEFT JOINCara kerja LEFT JOIN di SQLite: menyimpan baris yang tidak punya pasangan, membaca NULL, memfilter dengan aman, dan join lebih dari dua tabel.
- Self JoinCara kerja self join di SQLite: memasangkan baris dari tabel yang sama memakai alias, dengan contoh lengkap untuk karyawan/manajer dan data hierarki.
- SubqueryCara menaruh satu SELECT di dalam SELECT lain di SQLite: scalar subquery, IN/EXISTS, derived table, correlated subquery, dan kapan JOIN lebih mudah dibaca.
- CTECara kerja Common Table Expression di SQLite: memakai WITH untuk memberi nama pada subquery, merangkai beberapa CTE, dan menulis query yang bisa dibaca dari atas ke bawah.
- CTE RekursifCara kerja CTE rekursif di SQLite: bentuk anchor dan bagian rekursif, menelusuri pohon induk dan anak, membuat deret, dan menghindari perulangan tanpa akhir.
Index & Performa
- IndexCara kerja index di SQLite, kapan index membantu, kapan malah merugikan, dan cara membaca apakah planner benar-benar memakainya.
- Composite IndexCara kerja index banyak kolom di SQLite, kenapa urutan kolom itu penting, dan kapan composite index membantu atau justru hanya membuang ruang.
- Index ParsialCara kerja index parsial di SQLite: memberi index hanya pada baris yang benar-benar kamu query, dan pola-pola (soft delete, keunikan parsial, subset yang sering diakses) yang membuatnya sepadan.
- EXPLAIN QUERY PLANCara memakai EXPLAIN QUERY PLAN di SQLite untuk melihat apakah query-mu memakai index, apa arti SCAN dan SEARCH, dan cara membaca rencana join.
- ANALYZE & VACUUMCara `ANALYZE` dan `VACUUM` menjaga database SQLite tetap cepat dan ringkas: apa yang sebenarnya dilakukan masing-masing, kapan menjalankannya, dan varian yang perlu kamu tahu.
Fitur Lanjutan
- TransaksiCara kerja transaksi di SQLite: BEGIN, COMMIT, ROLLBACK, autocommit, dan mode DEFERRED/IMMEDIATE/EXCLUSIVE yang menentukan kapan kunci diambil.
- SavepointCara kerja savepoint di SQLite: penanda bernama di dalam transaksi yang bisa kamu kembalikan tanpa membuang seluruh transaksinya.
- ViewCara kerja view di SQLite: menyimpan query sebagai tabel virtual, kapan memakai view sementara, dan kenapa view di SQLite secara default hanya bisa dibaca.
- TriggerCara kerja trigger di SQLite: BEFORE dan AFTER, INSTEAD OF pada view, referensi baris OLD dan NEW, dan kapan trigger adalah alat yang tepat.
- Dukungan JSONCara SQLite menyimpan dan meng-query JSON: mengambil field, memperbarui nilai, memecah array dengan json_each, dan memberi index pada path JSON agar cepat.
- Full-Text SearchCara menambahkan full-text search ke SQLite dengan FTS5: membuat virtual table, operator MATCH, peringkat BM25, dan menjaga index tetap sinkron dengan datamu.
- Window FunctionCara kerja window function di SQLite: OVER, PARTITION BY, fungsi peringkat, LAG/LEAD, dan klausa frame untuk total berjalan.
- Generated ColumnCara kerja generated column di SQLite: mendeklarasikannya, memilih antara VIRTUAL dan STORED, dan membuat index untuk pencarian yang cepat.
- ATTACH DATABASECara ATTACH DATABASE membuka beberapa file SQLite dalam satu koneksi, menjalankan query lintas file dengan prefiks skema, dan melepasnya saat sudah selesai.
Keamanan & Integrasi Aplikasi
- Prepared StatementApa itu prepared statement di SQLite, kenapa fitur ini ada, dan siklus prepare/bind/step/finalize yang dibungkus oleh setiap driver.
- Binding ParameterCara kerja parameter binding di SQLite: placeholder posisional, parameter bernama, dan aturan mengirim nilai dengan aman dari aplikasimu.
- SQL InjectionKenapa menggabungkan string itu berbahaya, bagaimana SQL injection sebenarnya bekerja, dan bagaimana parameterized query di SQLite menutup celah itu untuk selamanya.
- Koneksi dari AplikasiCara aplikasi membuka dan memakai database SQLite: connection string, path file, driver di berbagai bahasa, dan pengaturan yang perlu benar sejak hari pertama.
- MigrasiCara mengubah skema SQLite dengan aman dari waktu ke waktu memakai PRAGMA user_version, script migrasi yang berurutan, dan transaksi agar semuanya bisa dibatalkan.
- WAL & KonkurensiCara write-ahead logging di SQLite mengubah urusan konkurensi: pembaca dan penulis tidak lagi saling menghalangi, dan apa sebenarnya fungsi file -wal dan -shm.
Produksi & Operasional
- Backup & RestoreCara melakukan backup dan restore database SQLite dengan aman: perintah .backup, VACUUM INTO, online backup API, dan kenapa menyalin file adalah langkah yang keliru.
- Pengaturan PRAGMAPernyataan PRAGMA yang benar-benar penting, yaitu journal_mode, synchronous, foreign_keys, busy_timeout, cache_size, beserta nilai yang dipakai di produksi.
- Error UmumError SQLite yang benar-benar akan kamu temui di production, seperti database is locked, readonly database, disk image malformed, dan kegagalan constraint, beserta cara memperbaikinya.