F2 · Kamus istilah
Istilah F2 · SQL dan Data dari Nol
Penjelasan singkat untuk istilah, fungsi, dan rumus yang dipakai di course ini. Di dalam modul, istilah bergaris titik bisa diketuk untuk melihat kartu yang sama.
Kembali ke daftar modul F290 dari 90 istilah
ACID
Empat janji transaksi basis data: atomicity (semua jadi atau semua batal), consistency (aturan tetap terjaga), isolation (transaksi yang berjalan bersamaan tidak saling merusak), dan durability (yang sudah
COMMITtidak hilang walau listrik padam).Dipelajari di Modul 13 · Transaksi dan konkurensi
afinitasjuga: afinitas tipe
Cara SQLite memperlakukan tipe kolom: tipe hanya kecenderungan, bukan larangan. Kolom
INTEGERmengubah teks'25'menjadi angka 25, tetapi teks seperti'dua'tetap disimpan sebagai teks tanpa galat. TabelSTRICTmenolaknya.Dipelajari di Modul 09 · Membuat tabel dan menjaga data
anti-join
Kueri untuk mencari baris yang tidak punya pasangan di tabel lain. Caranya:
LEFT JOIN, lalu saring kolom kunci tabel kanan denganIS NULL; bisa juga denganNOT EXISTS.Contoh: produk yang tidak pernah terjual tidak punya pasangan di
transaksi_item.Dipelajari di Modul 05 · JOIN
ASMemberi nama baru (alias) untuk kolom hasil atau tabel, tanpa mengubah tabel aslinya. Alias tabel menyingkat penulisan:
FROM produk AS p, lalup.nama. Untuk tabel,ASboleh tidak ditulis (FROM produk p).Contoh:
harga_jual - harga_beli AS untung_per_unit.Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY
AVGFungsi agregasi untuk rata-rata: jumlah nilai dibagi banyaknya nilai yang terisi.
NULLdilewati, bukan dianggap nol, dan hasilnya selalu pecahan.Contoh:
AVG(harga_jual)memberi rata-rata harga jual semua produk.Dipelajari di Modul 04 · Agregasi
B-tree
Bentuk penyimpanan indeks (dan tabel SQLite): pohon yang lebar dan pendek. Setiap langkah turun mempersempit daerah pencarian, sehingga satu nilai di antara jutaan baris ditemukan hanya dalam beberapa langkah.
Dipelajari di Modul 11 · Indeks dan kinerja dasar
banyak-ke-banyakjuga: N-N, tabel penghubung
Hubungan ketika kedua sisi bisa punya banyak pasangan. Satu kolom kunci asing tidak cukup, jadi dibuat tabel penghubung yang setiap barisnya mencatat satu pasangan.
Contoh: satu transaksi berisi banyak produk dan satu produk terjual di banyak transaksi; penghubungnya
transaksi_item.Dipelajari di Modul 10 · Desain skema
basis datajuga: database
Tempat menyimpan data dalam tabel-tabel yang saling terhubung, sehingga bisa ditanya dengan SQL. Program yang menyimpan dan menjawabnya, seperti SQLite atau PostgreSQL, juga sering disebut basis data.
Contoh: basis data Warung Makmur berisi delapan tabel, dari
kategorisampaitransaksi_item.Dipelajari di Modul 01 · Data, tabel, dan basis data
BEGIN IMMEDIATECara SQLite membuka transaksi basis data sambil langsung memesan hak menulis. Penulis lain yang mencoba
BEGIN IMMEDIATEditolak (database is locked) atau menunggu, tetapi masih boleh membaca. Pakai untuk transaksi yang akan menulis.Dipelajari di Modul 13 · Transaksi dan konkurensi
bingkaijuga: frame
Bagian jendela yang dipakai untuk menghitung satu baris, misalnya "dua baris sebelumnya sampai baris ini" (
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW). Bila jendela punyaORDER BYtanpa bingkai, bawaannya dari awal sampai baris ini, termasuk baris yang seri.Dipelajari di Modul 07 · Window function
CASEjuga: CASE WHENMemilih nilai berdasarkan syarat, seperti "kalau … maka …":
CASE WHEN syarat THEN nilai … ELSE nilai_lain END.WHENdiperiksa dari atas; yang pertama benar dipakai. TanpaELSE, hasilnyaNULLbila tidak ada yang cocok.Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
CHECKConstraint berisi syarat yang harus dipenuhi setiap baris, misalnya
CHECK (jumlah > 0). Baris yang membuat syaratnya salah ditolak. Syarat yang bernilaiNULLtetap diterima, jadi pasangkan denganNOT NULL.Dipelajari di Modul 09 · Membuat tabel dan menjaga data
COALESCEMengembalikan nilai pertama dari daftarnya yang bukan
NULL. Biasa dipakai untuk menggantiNULLdengan nilai pengganti.Contoh:
COALESCE(rt, 'belum diisi')menampilkan "belum diisi" untuk pelanggan yang RT-nya kosong.Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
COMMITjuga: commitMenyimpan semua perubahan sejak
BEGINsekaligus dan menutup transaksi basis data. Di Python,conn.commit()melakukan hal yang sama; tanpa itu, perubahan dari program belum tersimpan.Dipelajari di Modul 08 · Mengubah data
constraint
Aturan di tabel yang selalu dijaga basis data, siapa pun yang memasukkan data:
NOT NULL,UNIQUE,CHECK,PRIMARY KEY, dan kunci asing. Data yang melanggarnya ditolak dengan galat.Contoh:
CHECK (jumlah > 0)menolak baris barang yang jumlahnya 0.Dipelajari di Modul 09 · Membuat tabel dan menjaga data
COUNTFungsi agregasi untuk menghitung.
COUNT(*)menghitung baris,COUNT(kolom)menghitung nilai yang bukanNULL, danCOUNT(DISTINCT kolom)menghitung nilai yang berbeda. Hasilnya tidak pernahNULL: tanpa baris, hasilnya 0.Contoh:
SELECT COUNT(*) FROM transaksi;memberi 816.Dipelajari di Modul 01 · Data, tabel, dan basis data
CREATE INDEXPerintah untuk membuat indeks:
CREATE INDEX nama ON tabel (kolom, …). Kueri tidak perlu menyebut indeksnya; basis data memilih sendiri kapan memakainya.CREATE UNIQUE INDEXsekaligus melarang nilai kembar.Contoh:
CREATE INDEX idx_transaksi_waktu ON transaksi (waktu);Dipelajari di Modul 11 · Indeks dan kinerja dasar
CREATE TABLEPerintah untuk membuat tabel baru: nama tabel, lalu di dalam kurung daftar kolom (nama, tipe, aturan) yang dipisah koma, tanpa koma sesudah kolom terakhir.
Contoh:
CREATE TABLE rak (id INTEGER PRIMARY KEY, nama TEXT NOT NULL);Dipelajari di Modul 09 · Membuat tabel dan menjaga data
CTEjuga: common table expression
Singkatan common table expression: hasil sebuah kueri yang diberi nama dengan
WITH nama AS (…), lalu dipakai seperti tabel oleh kueri berikutnya. CTE memecah pertanyaan sulit menjadi langkah-langkah yang mudah dibaca dan diperiksa.Dipelajari di Modul 06 · Subquery dan CTE
dateFungsi SQLite yang mengambil tanggal dari teks waktu:
date('2026-09-01 07:34:18')memberi'2026-09-01'. Ia juga bisa menggeser tanggal (date(t, '+7 days')) dan memberiNULLbila teksnya bukan tanggal. Di PostgreSQL,::datemengubah nilai menjadi tanggal.Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
deadlock
Keadaan dua transaksi basis data saling menunggu: A memegang kunci yang dibutuhkan B, sementara B memegang kunci yang dibutuhkan A. PostgreSQL mendeteksinya lalu membatalkan salah satunya, yang kemudian harus dicoba ulang.
Dipelajari di Modul 13 · Transaksi dan konkurensi
DISTINCTMembuang baris kembar dari hasil, sehingga setiap kombinasi nilai muncul sekali.
COUNT(DISTINCT kolom)menghitung banyaknya nilai yang berbeda.Contoh:
SELECT DISTINCT metode_bayar FROM transaksi;menampilkan setiap cara bayar sekali saja.Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY
executejuga: executemanyMetode koneksi
sqlite3di Python yang menjalankan satu perintah SQL:conn.execute(sql, nilai), dengan nilai untuk setiap?sebagai tuple. Hasilnya kursor, penunjuk ke baris hasil.executemanymenjalankan perintah yang sama untuk setiap tuple di sebuah list.Dipelajari di Modul 14 · SQL dari Python
EXISTSjuga: NOT EXISTSSyarat yang benar bila subquery di dalamnya menghasilkan paling sedikit satu baris;
NOT EXISTSkebalikannya. Isi kolomnya tidak penting, jadi biasanya ditulisSELECT 1. DiDROP TABLE IF EXISTS, artinya "bila tabelnya ada".Dipelajari di Modul 06 · Subquery dan CTE
EXPLAIN QUERY PLANDitulis di depan kueri untuk melihat rencana kueri SQLite tanpa menjalankan kuerinya.
SCANberarti membaca seluruh tabel;SEARCH … USING INDEXberarti melompat lewat indeks.Dipelajari di Modul 11 · Indeks dan kinerja dasar
fan-outjuga: baris berlipat
Baris yang berlipat setelah
JOINke tabel "banyak": satu transaksi berisi tiga barang menjadi tiga baris. Menghitung atau menjumlahkan kolom milik sisi "satu" sesudahnya memberi angka yang terlalu besar.Contoh: sesudah
JOINketransaksi_item, hitung transaksi denganCOUNT(DISTINCT t.id), bukanCOUNT(*).Dipelajari di Modul 05 · JOIN
fetchalljuga: fetchoneMetode kursor yang mengambil semua baris hasil sebagai list berisi tuple, satu tuple per baris.
fetchonehanya mengambil satu baris (sebuah tuple), atauNonebila tidak ada baris lagi.Contoh:
conn.execute("SELECT COUNT(*) FROM transaksi").fetchone()memberi(816,).Dipelajari di Modul 14 · SQL dari Python
FOR UPDATEDitulis di akhir
SELECTdi PostgreSQL untuk mengunci baris yang dibaca sampai transaksi basis data selesai. Transaksi lain yang ingin mengubah atau mengunci baris itu harus menunggu. SQLite tidak mengenalnya.Dipelajari di Modul 13 · Transaksi dan konkurensi
fungsi agregasijuga: agregasi
Fungsi yang meringkas banyak nilai menjadi satu:
COUNT,SUM,AVG,MIN, danMAX. Semua kecualiCOUNT(*)melewatiNULL. BersamaGROUP BY, hasilnya satu angka untuk setiap kelompok.Contoh:
SUM(jumlah * harga_satuan)meringkas 1.516 baris barang menjadi omzet sebulan, Rp14.128.200.Dipelajari di Modul 04 · Agregasi
GROUP BYMengelompokkan baris yang nilainya sama, lalu fungsi agregasi menghitung satu angka untuk setiap kelompok. Setiap kolom di
SELECTharus ada diGROUP BYatau dibungkus fungsi agregasi.Contoh:
SELECT metode_bayar, COUNT(*) FROM transaksi GROUP BY metode_bayar;memberi satu baris per cara bayar.Dipelajari di Modul 04 · Agregasi
HAVINGMenyaring kelompok sesudah
GROUP BY, biasanya dengan syarat agregasi. Bedanya denganWHERE:WHEREmenyaring baris sebelum dikelompokkan dan tidak boleh memakai agregasi.Contoh:
HAVING COUNT(*) >= 33hanya menyisakan hari dengan minimal 33 transaksi.Dipelajari di Modul 04 · Agregasi
INjuga: NOT INSyarat "salah satu dari daftar":
kategori_id IN (1, 6)sama dengankategori_id = 1 OR kategori_id = 6. Daftarnya boleh hasil subquery. Awas:NOT INtidak meloloskan apa pun bila daftarnya berisiNULL.Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY
indeksjuga: index
Daftar terurut berisi nilai sebuah kolom beserta penunjuk ke barisnya, seperti indeks di belakang buku. Dengan indeks, basis data langsung melompat ke baris yang dicari (
SEARCH), tidak membaca semuanya (SCAN). Indeks memakan tempat dan memperlambatINSERT.Dipelajari di Modul 11 · Indeks dan kinerja dasar
indeks gabungan
Indeks dari beberapa kolom, diurutkan menurut kolom pertama, lalu kolom kedua. Ia membantu kueri yang menyaring kolom pertamanya, tetapi biasanya tidak terpakai bila kolom pertama dilompati.
Contoh:
CREATE INDEX idx_transaksi_metode_waktu ON transaksi (metode_bayar, waktu);Dipelajari di Modul 11 · Indeks dan kinerja dasar
INSERTjuga: INSERT INTOPerintah untuk menambah baris:
INSERT INTO tabel (kolom, …) VALUES (nilai, …). Nilai dipasangkan dengan kolom menurut urutannya. GantiVALUESdenganSELECTuntuk menambah baris dari hasil kueri.Contoh:
INSERT INTO kategori (id, nama) VALUES (8, 'Obat ringan');Dipelajari di Modul 08 · Mengubah data
JOINjuga: INNER JOINMenggabungkan baris dua tabel yang cocok menurut syarat
ON, biasanya kunci asing sama dengan kunci primer. Baris tanpa pasangan tidak ikut. Nama lengkapnyaINNER JOIN.Contoh:
FROM produk AS p JOIN kategori AS k ON k.id = p.kategori_id.Dipelajari di Modul 05 · JOIN
juliandayFungsi SQLite yang mengubah tanggal menjadi angka hari (boleh pecahan). Selisih dua
juliandayadalah selisih harinya.Contoh:
julianday('2026-09-30') - julianday('2025-01-10')memberi628.0.Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
kasbon
Utang belanja pelanggan langganan yang dicatat warung, untuk dibayar belakangan, sekaligus atau dicicil. Course ini membangun tabel
kasbondanpembayaran_kasbonuntuk mencatatnya; sisa utang selalu dihitung, tidak disimpan.Dipelajari di Modul 09 · Membuat tabel dan menjaga data
kolom telanjang
Kolom di
SELECTyang tidak ada diGROUP BYdan tidak dibungkus fungsi agregasi. SQLite tetap menjalankannya dengan nilai dari salah satu baris kelompok, tanpa aturan yang bisa diandalkan; PostgreSQL menolaknya dengan galat.Dipelajari di Modul 04 · Agregasi
koneksi
Jalur yang dibuka programmu ke basis data. Setiap aplikasi atau tablet kasir punya koneksinya sendiri, dan pengaturan seperti
PRAGMA foreign_keysberlaku per koneksi. Di Python, koneksi dibuat dengansqlite3.connect.Dipelajari di Modul 13 · Transaksi dan konkurensi
kuerijuga: query
Satu perintah SQL yang kamu kirim ke basis data, misalnya pertanyaan yang diawali
SELECTdan diakhiri titik koma. Jawabannya berupa tabel hasil; kueriSELECTtidak mengubah isi tabel aslinya.Contoh:
SELECT * FROM kasir;adalah kueri yang dijawab dengan tiga baris kasir.Dipelajari di Modul 01 · Data, tabel, dan basis data
kunci asingjuga: foreign key
Kolom yang isinya menunjuk ke kunci primer tabel lain. Kunci asing menghubungkan tabel-tabel, dan menjadi syarat penggabungan saat memakai
JOIN.Contoh:
kategori_id = 1di tabelprodukmenunjuk ke barisid = 1di tabelkategori, yaitu "Makanan instan".Dipelajari di Modul 01 · Data, tabel, dan basis data
kunci primerjuga: primary key, kunci primer gabungan
Kolom yang nilainya unik untuk setiap baris dan tidak pernah kosong, seperti nomor nota. Bila keunikannya baru terjamin dari dua kolom bersama, kuncinya disebut kunci primer gabungan.
Contoh:
iddi tabelproduk; ditransaksi_itemkuncinya pasangan(transaksi_id, produk_id).Dipelajari di Modul 01 · Data, tabel, dan basis data
laba kotor
Omzet dikurangi harga beli barang yang terjual, sebelum biaya lain seperti listrik dan plastik:
SUM(jumlah * (harga_satuan - harga_beli)). Di course ini harga belinya memakai harga beli terakhir di tabelproduk.Contoh: minyak goreng dijual Rp19.000 dan dibeli Rp17.500, jadi setiap botol memberi laba kotor Rp1.500.
Dipelajari di Modul 06 · Subquery dan CTE
LAGjuga: LEADWindow function yang mengambil nilai dari baris sebelumnya di jendela, menurut
ORDER BY-nya;LEADmengambil dari baris sesudahnya. Baris pertama tidak punya baris sebelumnya, jadiLAGmemberiNULL.Dipelajari di Modul 07 · Window function
LEFT JOINSeperti
JOIN, tetapi semua baris tabel kiri (yang ditulis diFROM) tetap tampil; bila tidak punya pasangan, kolom tabel kanan diisiNULL.Contoh:
kategori LEFT JOIN produktetap menampilkan Alat tulis walau belum punya produk.Dipelajari di Modul 05 · JOIN
LIKEMencari teks yang cocok dengan pola:
%berarti "teks apa saja, boleh kosong",_berarti "tepat satu karakter". Di SQLite,LIKEtidak membedakan huruf besar dan kecil untuk huruf A–Z.Contoh:
nama LIKE '%teh%'cocok dengan "Teh botol 350 ml".Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY
LIMITjuga: OFFSETMemotong hasil menjadi paling banyak n baris, dikerjakan paling akhir.
OFFSET mmelewati m baris pertama dulu. TanpaORDER BY, baris mana yang terambil tidak dijanjikan.Dipelajari di Modul 01 · Data, tabel, dan basis data
logika tiga nilai
Di SQL, sebuah syarat bisa bernilai benar, salah, atau tidak diketahui. Perbandingan apa pun dengan
NULLmenghasilkan "tidak diketahui", danWHEREhanya meloloskan baris yang syaratnya benar.Contoh:
NULL = NULLpun bernilaiNULL; hanyaNULL IS NULLyang memberi jawaban pasti.Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
marginjuga: margin persen
Bagian harga jual yang menjadi untung, biasanya ditulis dalam persen: 100 × (harga jual − harga beli) / harga jual.
Contoh: mi instan goreng dijual Rp3.500 dan dibeli Rp3.000, jadi marginnya 100 × 500 / 3.500 ≈ 14,3%.
Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
nilai serijuga: pemecah seri
Baris-baris dengan nilai urut yang sama, misalnya dua produk sama-sama Rp1.000. Urutan di antara mereka bisa berubah-ubah, jadi tambahkan kolom unik sebagai pemecah seri, misalnya
ORDER BY harga_jual, nama.Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY
normalisasijuga: 1NF, 2NF, 3NF
Memecah tabel supaya setiap fakta disimpan di tepat satu tempat, sehingga data tidak bisa bertentangan. Bertahap: 1NF (satu sel satu nilai), 2NF (setiap kolom bergantung pada seluruh kunci), 3NF (tanpa ketergantungan berantai lewat kolom lain).
Dipelajari di Modul 10 · Desain skema
NOT NULLConstraint yang membuat kolom wajib diisi: baris dengan
NULLdi kolom itu ditolak. DiWHERE, bentukIS NOT NULLbermakna lain, yaitu syarat "kolom ini terisi".Dipelajari di Modul 09 · Membuat tabel dan menjaga data
NULLjuga: IS NULL, IS NOT NULLTanda "kosong, tidak diketahui", bukan nol dan bukan teks kosong.
NULLtidak bisa dicari dengan=; pakaiIS NULLatauIS NOT NULL. Hitungan denganNULLmenghasilkanNULL.Contoh:
WHERE rt IS NULLmencari pelanggan yang RT-nya belum dicatat.Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
omzet
Total uang penjualan, sebelum dikurangi modal. Di course ini omzet selalu
SUM(jumlah * harga_satuan)daritransaksi_item, memakai harga saat transaksi terjadi. Omzet bukan untung.Contoh: omzet Warung Makmur selama September 2026 adalah Rp14.128.200.
Dipelajari di Modul 04 · Agregasi
ORDER BYMengurutkan hasil, dari kecil ke besar (bawaan) atau besar ke kecil (
DESC). Kolom kedua dipakai bila kolom pertama seri. TanpaORDER BY, urutan hasil tidak dijanjikan.Contoh:
ORDER BY harga_jual DESC, nama.Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY
OVERTanda bahwa sebuah fungsi dipakai sebagai window function. Di dalam kurungnya kamu menentukan jendela:
PARTITION BY(kelompok),ORDER BY(urutan), dan bingkai.OVER ()yang kosong berarti jendelanya semua baris hasil.Dipelajari di Modul 07 · Window function
parameter
Lubang
?di teks SQL yang nilainya dikirim terpisah, misalnyaconn.execute("… WHERE nama = ?", (nama,)). Nilainya selalu diperlakukan sebagai data, tidak pernah sebagai bagian perintah.Dipelajari di Modul 14 · SQL dari Python
PARTITION BYMembagi jendela menjadi kelompok, mirip
GROUP BY, tetapi baris tidak diringkas: setiap baris tetap tampil, dan hitungannya hanya memakai baris dari kelompoknya sendiri.Contoh:
ROW_NUMBER() OVER (PARTITION BY kategori_id ORDER BY omzet DESC, nama)memberi nomor 1, 2, 3, … di setiap kategori.Dipelajari di Modul 07 · Window function
pembagian bilangan bulat
Bila dua bilangan bulat dibagi, SQL membuang pecahannya (tidak membulatkan). Supaya hasilnya pecahan, jadikan salah satu angkanya pecahan, misalnya dengan menulis
100.0 *di depan.Contoh:
7 / 2memberi3, sedangkan7 / 2.0memberi3.5.Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
pembaruan atomik
Membaca dan menulis nilai di dalam satu perintah, sehingga tidak ada yang bisa menyelip di tengahnya. Syarat di
WHEREsekaligus bisa menolak penjualan yang melebihi stok.Contoh:
UPDATE produk SET stok = stok - 2 WHERE id = 14;Dipelajari di Modul 13 · Transaksi dan konkurensi
pembaruan yang hilangjuga: lost update
Kesalahan saat dua pengguna membaca nilai yang sama, menghitung sendiri di aplikasi, lalu menulis bergantian: tulisan kedua menimpa yang pertama tanpa galat apa pun.
Contoh: dua kasir membaca stok yang sama, masing-masing menyimpan stok hasil hitungannya sendiri, dan penjualan kasir pertama hilang dari catatan.
Dipelajari di Modul 13 · Transaksi dan konkurensi
PostgreSQL
Basis data berbentuk server yang banyak dipakai aplikasi web dengan banyak pengguna. Dasar SQL-nya sama dengan SQLite, tetapi aturannya lebih ketat dan beberapa nama fungsinya berbeda.
Contoh:
strftimemilik SQLite tidak ada di PostgreSQL; salah satu padanannyato_char.Dipelajari di Modul 01 · Data, tabel, dan basis data
PRAGMA foreign_keysjuga: PRAGMA foreign_keys = ONSakelar SQLite untuk memeriksa kunci asing. Bawaannya mati, jadi rujukan ke baris yang tidak ada tetap diterima.
PRAGMA foreign_keys = ONmenyalakannya untuk satu koneksi, dan harus dijalankan di luar transaksi basis data.Dipelajari di Modul 08 · Mengubah data
pragma_table_infoFungsi SQLite yang menampilkan kolom-kolom sebuah tabel: nama, tipe, wajib diisi atau tidak (
notnull), nilai bawaan, dan kunci primer (pk). Dipakai seperti tabel diFROM.Contoh:
SELECT * FROM pragma_table_info('produk');Dipelajari di Modul 01 · Data, tabel, dan basis data
PRIMARY KEYjuga: INTEGER PRIMARY KEYMenetapkan kunci primer tabel, untuk satu kolom (
id INTEGER PRIMARY KEY) atau gabungan kolom (PRIMARY KEY (transaksi_id, produk_id)). Di SQLite, kolomINTEGER PRIMARY KEYdiberi nomor otomatis bila tidak diisi.Dipelajari di Modul 09 · Membuat tabel dan menjaga data
RANKjuga: DENSE_RANKWindow function untuk peringkat. Nilai seri mendapat peringkat yang sama:
RANKlalu melompat (1, 2, 3, 3, 5), sedangkanDENSE_RANKtidak melompat (1, 2, 3, 3, 4).Dipelajari di Modul 07 · Window function
REFERENCESjuga: FOREIGN KEYMembuat kunci asing:
pelanggan_id INTEGER REFERENCES pelanggan(id)berarti isinya harus ada dipelanggan.id. SQLite baru memeriksanya bilaPRAGMA foreign_keys = ON.ON DELETEmengatur apa yang terjadi bila baris yang dirujuk dihapus.Dipelajari di Modul 09 · Membuat tabel dan menjaga data
rencana kueri
Langkah-langkah yang dipilih basis data untuk menjawab sebuah kueri, misalnya membaca seluruh tabel atau melompat lewat indeks. Di SQLite, rencana ini dilihat dengan
EXPLAIN QUERY PLANtanpa menjalankan kuerinya.Dipelajari di Modul 11 · Indeks dan kinerja dasar
ROLLBACKjuga: rollbackMembatalkan semua perubahan sejak
BEGIN, seolah tidak pernah terjadi, lalu menutup transaksi basis data. Di Python:conn.rollback().ROLLBACK TOhanya membatalkan perubahan sesudah sebuah titik simpan.Dipelajari di Modul 08 · Mengubah data
ROUNDMembulatkan angka:
ROUND(x, 1)menyisakan satu angka di belakang koma,ROUND(x)tanpa angka di belakang koma. Di SQLite hasilnya selalu pecahan, misalnya15.0. Bulatkan hanya di langkah terakhir, untuk tampilan.Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
ROW_NUMBERWindow function yang memberi nomor urut 1, 2, 3, … menurut
ORDER BYdi jendelanya. Nomornya selalu berbeda, juga untuk nilai seri, jadi tambahkan pemecah seri supaya hasilnya pasti.Dipelajari di Modul 07 · Window function
satu-ke-banyakjuga: 1-N
Hubungan dua tabel ketika satu baris di tabel pertama bisa punya banyak pasangan di tabel kedua, tetapi tidak sebaliknya. Kunci asingnya diletakkan di sisi "banyak".
Contoh: satu pelanggan bisa punya banyak kasbon, jadi
kasbon.pelanggan_idmenunjuk kepelanggan.Dipelajari di Modul 10 · Desain skema
SELECTjuga: selectKata kunci pembuka kueri yang berarti "tampilkan". Sesudahnya daftar kolom atau hitungan yang ingin dilihat (
*berarti semua kolom), laluFROMmenyebut tabel asalnya.Contoh:
SELECT nama, harga_jual FROM produk;Dipelajari di Modul 01 · Data, tabel, dan basis data
skemajuga: schema
Rancangan sebuah basis data: daftar tabel, kolom beserta jenis isinya, dan aturan seperti kunci primer dan kunci asing. SQLite menyimpan skemanya di tabel khusus
sqlite_master.Dipelajari di Modul 01 · Data, tabel, dan basis data
SQL
Bahasa untuk bertanya kepada basis data dan mengubah isinya. Hampir semua basis data relasional memakainya, jadi dasar yang kamu pelajari di SQLite juga berlaku di PostgreSQL.
Dipelajari di Modul 01 · Data, tabel, dan basis data
SQL injection
Serangan ketika masukan dari luar ditempel langsung ke teks SQL, misalnya dengan f-string, sehingga masukan itu ikut dijalankan sebagai perintah. Obatnya: selalu kirim nilai lewat parameter
?.Dipelajari di Modul 14 · SQL dari Python
SQLite
Basis data kecil yang tersimpan dalam satu berkas dan tidak butuh program server yang harus dinyalakan. Course ini memakainya untuk semua contoh dan latihan, langsung di perambanmu.
Dipelajari di Modul 01 · Data, tabel, dan basis data
strftimeFungsi SQLite yang mengambil bagian waktu menurut kode format:
%Ytahun,%mbulan,%Hjam,%whari dalam minggu (0 = Minggu). Hasilnya selalu teks, jadi bandingkan dengan'07', bukan7.Contoh:
strftime('%H', '2026-09-01 07:34:18')memberi'07'.Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan
subqueryjuga: subquery skalar
Kueri di dalam kueri lain, ditulis di dalam kurung. Subquery skalar menghasilkan tepat satu nilai dan bisa dipakai seperti angka biasa; subquery lain menghasilkan daftar (untuk
IN) atau tabel (diFROM).Contoh:
WHERE harga_jual > (SELECT AVG(harga_jual) FROM produk).Dipelajari di Modul 06 · Subquery dan CTE
subquery berkorelasi
Subquery yang memakai kolom dari kueri luarnya, sehingga dihitung ulang untuk setiap baris luar.
Contoh:
WHERE i.produk_id = p.iddi dalam subquery membuatnya mencari waktu terakhir terjual untuk produkpyang sedang dibaca.Dipelajari di Modul 06 · Subquery dan CTE
total berjalanjuga: running total
Jumlah dari baris pertama sampai baris saat ini, sehingga angkanya terus bertambah. Di SQL ditulis
SUM(…) OVER (ORDER BY …).Contoh: omzet 1 September Rp381.800 dan 2 September Rp397.100, jadi total berjalan 2 September Rp778.900.
Dipelajari di Modul 07 · Window function
transaksi basis data
Sekumpulan perubahan yang diperlakukan sebagai satu kesatuan: semua tersimpan atau semua batal. Dibuka dengan
BEGIN, disimpan denganCOMMIT, dibatalkan denganROLLBACK. Jangan tertukar dengan tabeltransaksimilik warung.Contoh: restok menambah baris
pembeliandan menaikkanstokdi dalam satu transaksi basis data.Dipelajari di Modul 08 · Mengubah data
UNION ALLMenumpuk hasil dua kueri: baris kueri kedua ditambahkan di bawah baris kueri pertama. Banyaknya kolom keduanya harus sama, dan nama kolom diambil dari kueri pertama.
UNIONtanpaALLsekaligus membuang baris kembar.UPDATEPerintah untuk mengubah isi baris yang sudah ada:
UPDATE tabel SET kolom = nilai WHERE syarat. TanpaWHERE, semua baris berubah, jadi jalankan duluSELECTdenganWHEREyang sama.Contoh:
UPDATE produk SET harga_jual = 19500 WHERE id = 14;Dipelajari di Modul 08 · Mengubah data
upsert
Gabungan update dan insert: tambahkan baris baru, tetapi bila kuncinya sudah ada, ubah baris lama. Ditulis
INSERT … ON CONFLICT (kolom) DO UPDATE SET …;DO NOTHINGmelewati baris yang bentrok.Dipelajari di Modul 08 · Mengubah data
urutan kerja kuerijuga: urutan kerja
Urutan basis data mengerjakan bagian-bagian kueri, berbeda dari urutan menulisnya:
FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT. Karena itu alias dariSELECTboleh dipakai diORDER BY, tetapi menurut standar belum ada saatWHEREdikerjakan.Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY
WHEREBagian kueri yang menyaring baris: hanya baris yang syaratnya bernilai benar yang lolos. Dikerjakan sesudah
FROMdan sebelumGROUP BY, pada baris satu per satu.Contoh:
WHERE stok < 10hanya meloloskan produk yang stoknya di bawah 10.Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY
window functionjuga: jendela
Fungsi yang menghitung dari sekelompok baris (jendela), tetapi setiap baris tetap tampil, tidak diringkas seperti
GROUP BY. Ditulis denganOVER (…).Contoh:
SUM(omzet) OVER (ORDER BY tanggal)menempelkan total berjalan di setiap baris harian.Dipelajari di Modul 07 · Window function
WITHKata kunci pembuka CTE:
WITH nama AS (kueri)memberi nama pada hasil sebuah kueri, lalu kueri utama memakainya seperti tabel. Beberapa CTE dipisah koma;WITH RECURSIVEmembuat CTE yang memakai dirinya sendiri.Dipelajari di Modul 06 · Subquery dan CTE