Menu

Membuat Database SQLite: Cara Membuat File .db Baru

Cara membuat database SQLite: gambaran database sebagai file, perintah sqlite3, dan kenapa tidak ada pernyataan CREATE DATABASE.

Halaman ini dilengkapi editor yang bisa dijalankan. Edit, jalankan, dan lihat output-nya seketika.

Database SQLite Hanyalah Sebuah File

Kalau kamu pernah memakai MySQL atau Postgres, kamu terbiasa menjalankan CREATE DATABASE myapp; lalu server mencatat database baru di suatu tempat yang tidak terlihat. SQLite tidak bekerja seperti itu. Tidak ada server. Tidak ada pernyataan CREATE DATABASE. Database adalah satu file biasa di disk, biasanya dengan ekstensi .db, .sqlite, atau .sqlite3, meskipun ekstensi itu hanya kebiasaan.

Untuk membuatnya, arahkan tool sqlite3 ke nama file yang belum ada:

sqlite3 mydata.db

Selesai. Kalau mydata.db belum ada, SQLite siap membuatnya. Kalau sudah ada, SQLite membukanya. Perintahnya sama untuk kedua kasus. Gambarannya lebih mirip "membuka dokumen" daripada "menyalakan server database."

File Baru Muncul Setelah Kamu Menulis Sesuatu

Ada satu hal yang sering menjebak orang. Jalankan perintah di atas, ketik .quit, lalu lihat isi direktorimu. File-nya tidak ada.

SQLite itu malas. Ia tidak repot membuat file di disk sampai ada sesuatu yang perlu disimpan. Begitu kamu membuat tabel atau melakukan commit data, file-nya muncul:

Sekarang mydata.db sudah ada di disk. Sampai penulisan pertama itu, "database" hanya hidup di memori koneksi. Hal ini kadang membingungkan, dan kadang berguna, karena sesi yang dibatalkan tidak meninggalkan jejak.

Membuat Database dari CLI

Alur kerja lengkap dari shell yang baru dibuka:

$ sqlite3 mydata.db
SQLite version 3.45.0
Enter ".help" for usage hints.
sqlite> CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);
sqlite> .databases
main: /home/you/mydata.db r/w
sqlite> .quit

Beberapa perintah CLI yang berguna selama kamu di sana:

  • .databases: menampilkan database yang terlampir beserta path file-nya.
  • .tables: menampilkan tabel di database saat ini.
  • .schema: menampilkan pernyataan CREATE TABLE untuk semuanya.
  • .quit: keluar.

Kalau kamu sudah berada di dalam sqlite3 tanpa file yang terbuka (kamu menjalankannya tanpa argumen), kamu bisa membuka sebuah file dengan .open:

sqlite> .open mydata.db

Aturannya sama: dibuat kalau belum ada, dibuka kalau sudah ada.

"If Not Exists" Sudah Bawaan

Kekhawatiran yang umum dari pengguna database lain: bagaimana kalau file-nya sudah ada? Apakah akan tertimpa? Tidak. Membuka file yang sudah ada hanya membukanya. Tidak ada yang ditimpa. Padanan terdekat dari CREATE DATABASE IF NOT EXISTS adalah... membuka file itu saja. SQLite menangani kedua kasus dengan perintah yang sama.

Kalau kamu memang ingin mulai dari nol, hapus file-nya lebih dulu:

rm mydata.db
sqlite3 mydata.db

Tapi pastikan memang itu yang kamu mau. Tidak ada undo, dan tidak ada tool admin untuk memulihkannya.

Membuat Database dari Python

Sebagian besar waktu kamu tidak akan berada di CLI: kamu akan membuat database dari kode aplikasi. Python menyertakan modul sqlite3 di standard library, tanpa perlu instalasi:

sqlite3.connect("mydata.db") mengikuti aturan yang sama dengan CLI: membuat file kalau belum ada, membukanya kalau sudah ada. Setiap binding bahasa lain (better-sqlite3 di Node, driver database/sql di Go, rusqlite di Rust, dan seterusnya) bekerja dengan cara yang sama, karena semuanya membungkus library C yang sama di baliknya.

Satu jalan pintas khusus Python: memberikan ":memory:" sebagai path menghasilkan database yang sepenuhnya hidup di RAM dan hilang saat koneksi ditutup. Itu dibahas di halaman berikutnya.

Di Mana Sebaiknya File-nya Disimpan?

Karena database adalah file, "di mana saya menyimpannya?" adalah pertanyaan yang nyata. Beberapa patokan praktis:

  • Untuk aplikasi: di suatu tempat di bawah direktori data milik pengguna atau direktori kerja aplikasimu. Jangan taruh di sebelah file executable pada sistem yang path-nya tidak bisa ditulisi.
  • Untuk proyek: di root repo atau di folder data/. Tambahkan ke .gitignore kalau isinya data lokal, karena memasukkan database biner ke Git jarang berakhir baik.
  • Untuk pengujian: pakai :memory: atau file sementara. Cepat dan bersih dengan sendirinya.

Izin akses juga penting. User yang menjalankan proses butuh akses baca dan tulis ke file itu dan ke direktori induknya (SQLite membuat file lock di samping database selama penulisan).

Pengecekan Cepat

Untuk membuktikan seluruh alurnya bekerja dari awal sampai akhir:

Kamu seharusnya mendapat dua baris. Kalau ini berhasil, file database-mu sudah ada, skemamu ada di dalamnya, dan datamu bisa di-query. Itulah seluruh cerita "membuat database" di SQLite: tanpa server, tanpa user, tanpa tabel izin. Hanya sebuah file.

Berikutnya: Database In-Memory

Pemanggilan sqlite3.connect(...) yang sama yang membuat file, dengan argumen yang tepat, bisa membuat database yang sama sekali tidak menyentuh disk. Database in-memory adalah cara tercepat untuk menjalankan pengujian, membuat prototipe skema, atau menyimpan data sementara. Itu yang berikutnya.

Pertanyaan yang sering diajukan

Bagaimana cara membuat database di SQLite?

Jalankan sqlite3 mydata.db dari shell. SQLite membuat file mydata.db kalau belum ada, dan membukanya kalau sudah ada. Tidak ada pernyataan CREATE DATABASE yang terpisah, karena database-nya adalah file itu.

Apakah ada perintah CREATE DATABASE di SQLite?

Tidak. Berbeda dengan MySQL atau Postgres, SQLite tidak punya pernyataan SQL CREATE DATABASE. Database dibuat begitu kamu mengarahkan sqlite3 (atau library client seperti modul sqlite3 di Python) ke nama file yang belum ada.

Kenapa file database SQLite baru saya kosong atau tidak ada?

SQLite itu malas: ia baru benar-benar menulis file ke disk saat kamu membuat tabel pertama atau melakukan commit pada sebuah transaksi. Kalau kamu hanya menjalankan sqlite3 mydata.db lalu keluar, tidak ada file yang muncul. Buat sebuah tabel atau jalankan .databases, dan file-nya akan muncul.

Bagaimana cara membuat database SQLite dari Python?

Import modul bawaan sqlite3 lalu panggil sqlite3.connect('mydata.db'). File-nya dibuat otomatis kalau belum ada. Pakai ':memory:' sebagai path kalau kamu ingin database in-memory sementara.

Ilustrasi bahasa pemrograman di Coddy

Belajar coding dengan Coddy

Mulai