Lewati ke konten utama

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 F2

90 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 COMMIT tidak 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 INTEGER mengubah teks '25' menjadi angka 25, tetapi teks seperti 'dua' tetap disimpan sebagai teks tanpa galat. Tabel STRICT menolaknya.

    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 dengan IS NULL; bisa juga dengan NOT EXISTS.

    Contoh: produk yang tidak pernah terjual tidak punya pasangan di transaksi_item.

    Dipelajari di Modul 05 · JOIN

  • AS

    Memberi nama baru (alias) untuk kolom hasil atau tabel, tanpa mengubah tabel aslinya. Alias tabel menyingkat penulisan: FROM produk AS p, lalu p.nama. Untuk tabel, AS boleh tidak ditulis (FROM produk p).

    Contoh: harga_jual - harga_beli AS untung_per_unit.

    Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY

  • AVG

    Fungsi agregasi untuk rata-rata: jumlah nilai dibagi banyaknya nilai yang terisi. NULL dilewati, 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 kategori sampai transaksi_item.

    Dipelajari di Modul 01 · Data, tabel, dan basis data

  • BEGIN IMMEDIATE

    Cara SQLite membuka transaksi basis data sambil langsung memesan hak menulis. Penulis lain yang mencoba BEGIN IMMEDIATE ditolak (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 punya ORDER BY tanpa bingkai, bawaannya dari awal sampai baris ini, termasuk baris yang seri.

    Dipelajari di Modul 07 · Window function

  • CASEjuga: CASE WHEN

    Memilih nilai berdasarkan syarat, seperti "kalau … maka …": CASE WHEN syarat THEN nilai … ELSE nilai_lain END. WHEN diperiksa dari atas; yang pertama benar dipakai. Tanpa ELSE, hasilnya NULL bila tidak ada yang cocok.

    Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan

  • CHECK

    Constraint berisi syarat yang harus dipenuhi setiap baris, misalnya CHECK (jumlah > 0). Baris yang membuat syaratnya salah ditolak. Syarat yang bernilai NULL tetap diterima, jadi pasangkan dengan NOT NULL.

    Dipelajari di Modul 09 · Membuat tabel dan menjaga data

  • COALESCE

    Mengembalikan nilai pertama dari daftarnya yang bukan NULL. Biasa dipakai untuk mengganti NULL dengan 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: commit

    Menyimpan semua perubahan sejak BEGIN sekaligus 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

  • COUNT

    Fungsi agregasi untuk menghitung. COUNT(*) menghitung baris, COUNT(kolom) menghitung nilai yang bukan NULL, dan COUNT(DISTINCT kolom) menghitung nilai yang berbeda. Hasilnya tidak pernah NULL: tanpa baris, hasilnya 0.

    Contoh: SELECT COUNT(*) FROM transaksi; memberi 816.

    Dipelajari di Modul 01 · Data, tabel, dan basis data

  • CREATE INDEX

    Perintah untuk membuat indeks: CREATE INDEX nama ON tabel (kolom, …). Kueri tidak perlu menyebut indeksnya; basis data memilih sendiri kapan memakainya. CREATE UNIQUE INDEX sekaligus melarang nilai kembar.

    Contoh: CREATE INDEX idx_transaksi_waktu ON transaksi (waktu);

    Dipelajari di Modul 11 · Indeks dan kinerja dasar

  • CREATE TABLE

    Perintah 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

  • date

    Fungsi 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 memberi NULL bila teksnya bukan tanggal. Di PostgreSQL, ::date mengubah 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

  • DISTINCT

    Membuang 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: executemany

    Metode koneksi sqlite3 di Python yang menjalankan satu perintah SQL: conn.execute(sql, nilai), dengan nilai untuk setiap ? sebagai tuple. Hasilnya kursor, penunjuk ke baris hasil. executemany menjalankan perintah yang sama untuk setiap tuple di sebuah list.

    Dipelajari di Modul 14 · SQL dari Python

  • EXISTSjuga: NOT EXISTS

    Syarat yang benar bila subquery di dalamnya menghasilkan paling sedikit satu baris; NOT EXISTS kebalikannya. Isi kolomnya tidak penting, jadi biasanya ditulis SELECT 1. Di DROP TABLE IF EXISTS, artinya "bila tabelnya ada".

    Dipelajari di Modul 06 · Subquery dan CTE

  • EXPLAIN QUERY PLAN

    Ditulis di depan kueri untuk melihat rencana kueri SQLite tanpa menjalankan kuerinya. SCAN berarti membaca seluruh tabel; SEARCH … USING INDEX berarti melompat lewat indeks.

    Dipelajari di Modul 11 · Indeks dan kinerja dasar

  • fan-outjuga: baris berlipat

    Baris yang berlipat setelah JOIN ke 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 JOIN ke transaksi_item, hitung transaksi dengan COUNT(DISTINCT t.id), bukan COUNT(*).

    Dipelajari di Modul 05 · JOIN

  • fetchalljuga: fetchone

    Metode kursor yang mengambil semua baris hasil sebagai list berisi tuple, satu tuple per baris. fetchone hanya mengambil satu baris (sebuah tuple), atau None bila tidak ada baris lagi.

    Contoh: conn.execute("SELECT COUNT(*) FROM transaksi").fetchone() memberi (816,).

    Dipelajari di Modul 14 · SQL dari Python

  • FOR UPDATE

    Ditulis di akhir SELECT di 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, dan MAX. Semua kecuali COUNT(*) melewati NULL. Bersama GROUP 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 BY

    Mengelompokkan baris yang nilainya sama, lalu fungsi agregasi menghitung satu angka untuk setiap kelompok. Setiap kolom di SELECT harus ada di GROUP BY atau 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

  • HAVING

    Menyaring kelompok sesudah GROUP BY, biasanya dengan syarat agregasi. Bedanya dengan WHERE: WHERE menyaring baris sebelum dikelompokkan dan tidak boleh memakai agregasi.

    Contoh: HAVING COUNT(*) >= 33 hanya menyisakan hari dengan minimal 33 transaksi.

    Dipelajari di Modul 04 · Agregasi

  • INjuga: NOT IN

    Syarat "salah satu dari daftar": kategori_id IN (1, 6) sama dengan kategori_id = 1 OR kategori_id = 6. Daftarnya boleh hasil subquery. Awas: NOT IN tidak meloloskan apa pun bila daftarnya berisi NULL.

    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 memperlambat INSERT.

    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 INTO

    Perintah untuk menambah baris: INSERT INTO tabel (kolom, …) VALUES (nilai, …). Nilai dipasangkan dengan kolom menurut urutannya. Ganti VALUES dengan SELECT untuk menambah baris dari hasil kueri.

    Contoh: INSERT INTO kategori (id, nama) VALUES (8, 'Obat ringan');

    Dipelajari di Modul 08 · Mengubah data

  • JOINjuga: INNER JOIN

    Menggabungkan baris dua tabel yang cocok menurut syarat ON, biasanya kunci asing sama dengan kunci primer. Baris tanpa pasangan tidak ikut. Nama lengkapnya INNER JOIN.

    Contoh: FROM produk AS p JOIN kategori AS k ON k.id = p.kategori_id.

    Dipelajari di Modul 05 · JOIN

  • julianday

    Fungsi SQLite yang mengubah tanggal menjadi angka hari (boleh pecahan). Selisih dua julianday adalah selisih harinya.

    Contoh: julianday('2026-09-30') - julianday('2025-01-10') memberi 628.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 kasbon dan pembayaran_kasbon untuk mencatatnya; sisa utang selalu dihitung, tidak disimpan.

    Dipelajari di Modul 09 · Membuat tabel dan menjaga data

  • kolom telanjang

    Kolom di SELECT yang tidak ada di GROUP BY dan 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_keys berlaku per koneksi. Di Python, koneksi dibuat dengan sqlite3.connect.

    Dipelajari di Modul 13 · Transaksi dan konkurensi

  • kuerijuga: query

    Satu perintah SQL yang kamu kirim ke basis data, misalnya pertanyaan yang diawali SELECT dan diakhiri titik koma. Jawabannya berupa tabel hasil; kueri SELECT tidak 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 = 1 di tabel produk menunjuk ke baris id = 1 di tabel kategori, 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: id di tabel produk; di transaksi_item kuncinya 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 tabel produk.

    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: LEAD

    Window function yang mengambil nilai dari baris sebelumnya di jendela, menurut ORDER BY-nya; LEAD mengambil dari baris sesudahnya. Baris pertama tidak punya baris sebelumnya, jadi LAG memberi NULL.

    Dipelajari di Modul 07 · Window function

  • LEFT JOIN

    Seperti JOIN, tetapi semua baris tabel kiri (yang ditulis di FROM) tetap tampil; bila tidak punya pasangan, kolom tabel kanan diisi NULL.

    Contoh: kategori LEFT JOIN produk tetap menampilkan Alat tulis walau belum punya produk.

    Dipelajari di Modul 05 · JOIN

  • LIKE

    Mencari teks yang cocok dengan pola: % berarti "teks apa saja, boleh kosong", _ berarti "tepat satu karakter". Di SQLite, LIKE tidak 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: OFFSET

    Memotong hasil menjadi paling banyak n baris, dikerjakan paling akhir. OFFSET m melewati m baris pertama dulu. Tanpa ORDER 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 NULL menghasilkan "tidak diketahui", dan WHERE hanya meloloskan baris yang syaratnya benar.

    Contoh: NULL = NULL pun bernilai NULL; hanya NULL IS NULL yang 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 NULL

    Constraint yang membuat kolom wajib diisi: baris dengan NULL di kolom itu ditolak. Di WHERE, bentuk IS NOT NULL bermakna lain, yaitu syarat "kolom ini terisi".

    Dipelajari di Modul 09 · Membuat tabel dan menjaga data

  • NULLjuga: IS NULL, IS NOT NULL

    Tanda "kosong, tidak diketahui", bukan nol dan bukan teks kosong. NULL tidak bisa dicari dengan =; pakai IS NULL atau IS NOT NULL. Hitungan dengan NULL menghasilkan NULL.

    Contoh: WHERE rt IS NULL mencari 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) dari transaksi_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 BY

    Mengurutkan hasil, dari kecil ke besar (bawaan) atau besar ke kecil (DESC). Kolom kedua dipakai bila kolom pertama seri. Tanpa ORDER BY, urutan hasil tidak dijanjikan.

    Contoh: ORDER BY harga_jual DESC, nama.

    Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY

  • OVER

    Tanda 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, misalnya conn.execute("… WHERE nama = ?", (nama,)). Nilainya selalu diperlakukan sebagai data, tidak pernah sebagai bagian perintah.

    Dipelajari di Modul 14 · SQL dari Python

  • PARTITION BY

    Membagi 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 / 2 memberi 3, sedangkan 7 / 2.0 memberi 3.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 WHERE sekaligus 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: strftime milik SQLite tidak ada di PostgreSQL; salah satu padanannya to_char.

    Dipelajari di Modul 01 · Data, tabel, dan basis data

  • PRAGMA foreign_keysjuga: PRAGMA foreign_keys = ON

    Sakelar SQLite untuk memeriksa kunci asing. Bawaannya mati, jadi rujukan ke baris yang tidak ada tetap diterima. PRAGMA foreign_keys = ON menyalakannya untuk satu koneksi, dan harus dijalankan di luar transaksi basis data.

    Dipelajari di Modul 08 · Mengubah data

  • pragma_table_info

    Fungsi SQLite yang menampilkan kolom-kolom sebuah tabel: nama, tipe, wajib diisi atau tidak (notnull), nilai bawaan, dan kunci primer (pk). Dipakai seperti tabel di FROM.

    Contoh: SELECT * FROM pragma_table_info('produk');

    Dipelajari di Modul 01 · Data, tabel, dan basis data

  • PRIMARY KEYjuga: INTEGER PRIMARY KEY

    Menetapkan kunci primer tabel, untuk satu kolom (id INTEGER PRIMARY KEY) atau gabungan kolom (PRIMARY KEY (transaksi_id, produk_id)). Di SQLite, kolom INTEGER PRIMARY KEY diberi nomor otomatis bila tidak diisi.

    Dipelajari di Modul 09 · Membuat tabel dan menjaga data

  • RANKjuga: DENSE_RANK

    Window function untuk peringkat. Nilai seri mendapat peringkat yang sama: RANK lalu melompat (1, 2, 3, 3, 5), sedangkan DENSE_RANK tidak melompat (1, 2, 3, 3, 4).

    Dipelajari di Modul 07 · Window function

  • REFERENCESjuga: FOREIGN KEY

    Membuat kunci asing: pelanggan_id INTEGER REFERENCES pelanggan(id) berarti isinya harus ada di pelanggan.id. SQLite baru memeriksanya bila PRAGMA foreign_keys = ON. ON DELETE mengatur 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 PLAN tanpa menjalankan kuerinya.

    Dipelajari di Modul 11 · Indeks dan kinerja dasar

  • ROLLBACKjuga: rollback

    Membatalkan semua perubahan sejak BEGIN, seolah tidak pernah terjadi, lalu menutup transaksi basis data. Di Python: conn.rollback(). ROLLBACK TO hanya membatalkan perubahan sesudah sebuah titik simpan.

    Dipelajari di Modul 08 · Mengubah data

  • ROUND

    Membulatkan angka: ROUND(x, 1) menyisakan satu angka di belakang koma, ROUND(x) tanpa angka di belakang koma. Di SQLite hasilnya selalu pecahan, misalnya 15.0. Bulatkan hanya di langkah terakhir, untuk tampilan.

    Dipelajari di Modul 03 · NULL, CASE, dan fungsi bawaan

  • ROW_NUMBER

    Window function yang memberi nomor urut 1, 2, 3, … menurut ORDER BY di 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_id menunjuk ke pelanggan.

    Dipelajari di Modul 10 · Desain skema

  • SELECTjuga: select

    Kata kunci pembuka kueri yang berarti "tampilkan". Sesudahnya daftar kolom atau hitungan yang ingin dilihat (* berarti semua kolom), lalu FROM menyebut 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

  • strftime

    Fungsi SQLite yang mengambil bagian waktu menurut kode format: %Y tahun, %m bulan, %H jam, %w hari dalam minggu (0 = Minggu). Hasilnya selalu teks, jadi bandingkan dengan '07', bukan 7.

    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 (di FROM).

    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.id di dalam subquery membuatnya mencari waktu terakhir terjual untuk produk p yang 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 dengan COMMIT, dibatalkan dengan ROLLBACK. Jangan tertukar dengan tabel transaksi milik warung.

    Contoh: restok menambah baris pembelian dan menaikkan stok di dalam satu transaksi basis data.

    Dipelajari di Modul 08 · Mengubah data

  • UNION ALL

    Menumpuk hasil dua kueri: baris kueri kedua ditambahkan di bawah baris kueri pertama. Banyaknya kolom keduanya harus sama, dan nama kolom diambil dari kueri pertama. UNION tanpa ALL sekaligus membuang baris kembar.

  • UPDATE

    Perintah untuk mengubah isi baris yang sudah ada: UPDATE tabel SET kolom = nilai WHERE syarat. Tanpa WHERE, semua baris berubah, jadi jalankan dulu SELECT dengan WHERE yang 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 NOTHING melewati 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 dari SELECT boleh dipakai di ORDER BY, tetapi menurut standar belum ada saat WHERE dikerjakan.

    Dipelajari di Modul 02 · SELECT, WHERE, dan ORDER BY

  • WHERE

    Bagian kueri yang menyaring baris: hanya baris yang syaratnya bernilai benar yang lolos. Dikerjakan sesudah FROM dan sebelum GROUP BY, pada baris satu per satu.

    Contoh: WHERE stok < 10 hanya 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 dengan OVER (…).

    Contoh: SUM(omzet) OVER (ORDER BY tanggal) menempelkan total berjalan di setiap baris harian.

    Dipelajari di Modul 07 · Window function

  • WITH

    Kata kunci pembuka CTE: WITH nama AS (kueri) memberi nama pada hasil sebuah kueri, lalu kueri utama memakainya seperti tabel. Beberapa CTE dipisah koma; WITH RECURSIVE membuat CTE yang memakai dirinya sendiri.

    Dipelajari di Modul 06 · Subquery dan CTE