Teori instalasi sudah cukup — sekarang kita membangun database pertama yang sesungguhnya: toko.db, database sederhana untuk daftar produk sebuah toko kopi. Kita akan membuat tabel, memasukkan tiga baris data, membacanya kembali, lalu memeriksa hasil akhirnya di disk. Sepanjang jalan kita akan melihat bukti langsung bahwa database SQLite hanyalah satu berkas biasa yang bisa disalin, dipindah, dan dibuka lagi kapan pun.

Membuka Database Baru #

Buka shell dengan nama berkas database yang kita inginkan:

bash
sqlite3 toko.db

Output yang Dihasilkan:

text
SQLite version 3.50.1 2025-06-06 14:52:32
Enter ".help" for usage hints.
sqlite>

Membuat Tabel #

Ketik statement CREATE TABLE berikut pada prompt sqlite>, lalu akhiri dengan titik koma:

text
sqlite> CREATE TABLE produk (
   ...>   id INTEGER PRIMARY KEY,
   ...>   nama TEXT NOT NULL,
   ...>   harga INTEGER NOT NULL
   ...> );
sqlite>

Shell menjawab dengan diam — CREATE TABLE tidak mengembalikan baris data, dan tidak ada berita error berarti statement berhasil. Mari kita bedah isinya:

  1. Baris 1 (CREATE TABLE produk () — meminta engine SQLite membuat tabel baru bernama produk di dalam database aktif.
  2. Baris 2 (id INTEGER PRIMARY KEY) — mendefinisikan kolom id bertipe INTEGER sebagai primary key. SQLite mengisi kolom ini otomatis dengan nomor urut bila kita tidak menyebutkannya saat INSERT.
  3. Baris 3 (nama TEXT NOT NULL) — kolom nama menyimpan teks dan wajib terisi; baris tanpa nama akan ditolak engine.
  4. Baris 4 (harga INTEGER NOT NULL) — kolom harga menyimpan bilangan bulat (dalam rupiah, tanpa pecahan) dan juga wajib terisi.
  5. Baris 5 ();) — menutup pernyataan; titik koma inilah yang memicu eksekusi.

Sejak titik ini berkas toko.db sudah ada di disk. Detail CREATE TABLE — tipe data, constraint, dan pilihan desainnya — dibahas lebih dalam pada Chapter Membuat Tabel dengan CREATE TABLE.

Memasukkan Data #

Tiga statement INSERT berikut mengisi tabel produk:

text
sqlite> INSERT INTO produk (nama, harga) VALUES ('Kopi Gayo', 45000);
sqlite> INSERT INTO produk (nama, harga) VALUES ('Teh Melati', 18000);
sqlite> INSERT INTO produk (nama, harga) VALUES ('Gula Aren', 25000);
sqlite>

Bedah statement pertama:

  1. INSERT INTO produk — menunjuk tabel tujuan data, yaitu produk.
  2. (nama, harga) — daftar kolom yang diisi pada statement ini. Kolom id sengaja tidak disebut sehingga diisi otomatis oleh engine.
  3. VALUES ('Kopi Gayo', 45000) — nilai untuk kolom tersebut, urutannya harus sama dengan daftar kolom: teks 'Kopi Gayo' masuk ke nama dan angka 45000 masuk ke harga.

Membaca Data Kembali #

Menulis saja belum cukup — sekarang kita pastikan datanya benar-benar tersimpan. Statement SELECT membaca seluruh isi tabel:

text
sqlite> SELECT * FROM produk;
1|Kopi Gayo|45000
2|Teh Melati|18000
3|Gula Aren|25000

Tiga baris hasil muncul dalam format list bawaan, dipisah tanda |. Kolom id terisi 1, 2, 3 secara otomatis oleh engine tanpa pernah kita ketik. Query berikut memfilter sekaligus mengurutkan:

text
sqlite> SELECT nama, harga FROM produk WHERE harga > 20000 ORDER BY harga;
Gula Aren|25000
Kopi Gayo|45000

Hanya dua produk berharga di atas 20000 yang tampil, diurutkan dari termurah. Kombinasi WHERE dan ORDER BY seperti ini adalah pola baca data yang akan dipakai terus-menerus pada Section SQL Dasar.

Memeriksa Struktur dan Menutup Sesi #

Sebelum keluar, periksa apa yang sudah dibangun dengan dua dot command:

text
sqlite> .tables
produk
sqlite> .schema
CREATE TABLE produk (
  id INTEGER PRIMARY KEY,
  nama TEXT NOT NULL,
  harga INTEGER NOT NULL
);
sqlite> .quit

Perintah .tables memastikan tabel produk terdaftar, dan .schema mencetak kembali statement CREATE yang tadi kita jalankan. Terakhir, .quit menutup sesi dan mengembalikan kita ke shell sistem operasi.

Sekarang periksa hasil kerja kita di luar SQLite — berkas toko.db berada di direktori tempat sesi dijalankan, berukuran sekitar 8 KB untuk tabel sekecil ini. Tidak ada layanan tambahan, tidak ada folder konfigurasi: seluruh database toko kita adalah satu berkas itu.

Pada komputer yang sama, cukup jalankan sqlite3 toko.db kapan pun untuk melanjutkan pekerjaan — seluruh struktur dan data menunggu persis seperti ditinggalkan. Dua dot command yang dipakai di atas — .tables dan .schema — baru sekelumit dari yang disediakan shell sqlite3; Chapter Dot Commands pada sqlite3 CLI membedah perintah-perintahnya secara tuntas, lalu Chapter Alat GUI untuk SQLite menutup section ini.