Contekan · 15 lembar · 508 baris
Rumus, pintasan, dan perintah yang paling sering dipakai
Tiap baris menaut ke pelajaran yang melatihnya. Buka satu lembar untuk mencetaknya dan menempelnya di samping layar.
38 baris · “Latih” membuka latihannya
Mengambil kolom
SELECT * FROM tabelMengambil semua kolom dan semua baris satu tabel.SELECT * FROM produk;
Latih: SELECT: mengambil isi tabelSELECT kolom1, kolom2Mengambil kolom tertentu saja; urutan kolom di hasil mengikuti urutan penulisannya.SELECT nama, kota FROM pelanggan;
Latih: Memilih kolom tertentuASMemberi nama lain pada kolom hasil. Nama kolom di tabel asalnya tidak berubah.SELECT nama AS pelanggan FROM pelanggan;
Latih: Mengganti nama kolom dengan ASDISTINCTMembuang baris hasil yang sama persis. Yang dibandingkan seluruh baris hasil, bukan satu kolom saja.SELECT DISTINCT status FROM pesanan;
Latih: DISTINCT dan LIMITLIMIT nMembatasi jumlah baris yang dikembalikan; ditulis paling akhir.SELECT * FROM produk LIMIT 3;
Latih: DISTINCT dan LIMITMenyaring baris
WHERE = <> < > <= >=Menyisakan baris yang syaratnya benar. Angka ditulis tanpa pemisah ribuan.SELECT nama, stok FROM produk WHERE stok < 50;
Latih: WHERE dengan perbandinganAND / ORAND menuntut semua syarat, OR cukup salah satunya. AND diperiksa lebih dulu; tanda kurung memaksa urutan lain.WHERE kota = 'Jakarta' OR kota = 'Bandung'
Latih: Teks, AND, dan ORLIKEMencocokkan pola teks: % berarti nol karakter atau lebih, _ tepat satu karakter.WHERE nama LIKE 'Pulpen%'
Latih: LIKE dan ININ (…)Benar bila nilainya sama dengan salah satu isi daftar; pengganti beberapa = yang digabung OR.WHERE kota IN ('Medan', 'Makassar')
Latih: LIKE dan INBETWEEN a AND bRentang nilai dengan kedua batas ikut terhitung. Batas kecil ditulis lebih dulu, atau hasilnya kosong.WHERE stok BETWEEN 20 AND 60
Latih: BETWEEN dan IS NULLIS NULL / IS NOT NULLMemeriksa sel yang belum terisi. Syarat = NULL tidak pernah benar, sehingga hasilnya selalu kosong.WHERE kota IS NULL
Latih: NULL: nilai yang belum adaMengurutkan dan meringkas
ORDER BY … DESCMengurutkan hasil. ASC (kecil ke besar) berlaku bila arahnya tidak ditulis; DESC dari besar ke kecil.ORDER BY stok DESC
Latih: Mengurutkan dengan ORDER BYORDER BY a ASC, b DESCKolom kedua hanya mengurutkan baris yang nilai kolom pertamanya sama. Tiap kolom punya arahnya sendiri.ORDER BY kota ASC, nama DESC
Latih: ORDER BY dengan dua kolomCOUNT / SUM / AVG / MIN / MAXMeringkas banyak baris menjadi satu nilai. Tanpa GROUP BY, hasilnya selalu satu baris.SELECT MIN(harga), MAX(harga), AVG(harga) FROM produk;
Latih: COUNT, SUM, AVG, MIN, MAXCOUNT(*) vs COUNT(kolom)COUNT(*) menghitung semua baris; COUNT(kolom) hanya yang kolomnya terisi. Selisihnya adalah jumlah sel kosong.SELECT COUNT(*) AS baris, COUNT(kota) AS kota_terisi FROM pelanggan;
Latih: Agregat pada kolom yang ada kosongnyaGROUP BYMemecah baris menjadi kelompok dan menghitung agregat per kelompok: satu baris hasil per kelompok.SELECT kota, COUNT(*) FROM pelanggan GROUP BY kota;
Latih: Mengelompokkan dengan GROUP BYHAVINGMenyaring kelompok sesudah agregatnya dihitung; WHERE menyaring baris sebelum dikelompokkan.GROUP BY kota HAVING COUNT(*) >= 2
Latih: Menyaring kelompok dengan HAVINGMenggabungkan tabel
JOIN … ONMemasangkan baris dua tabel menurut syarat ON. JOIN tanpa keterangan berarti INNER JOIN: baris tanpa pasangan tidak ikut.FROM pesanan JOIN pelanggan ON pelanggan.id = pesanan.pelanggan_id
Latih: INNER JOINFROM tabel AS tAlias tabel: nama pendek yang berlaku selama kueri. Dua alias untuk satu tabel menghasilkan self-join.FROM produk AS a JOIN produk AS b ON b.kategori = a.kategori AND b.harga > a.harga
Latih: Alias tabel dan self-joinLEFT JOINMenahan semua baris tabel kiri dan mengisi kolom tabel kanan dengan NULL bila pasangannya tidak ada — jawaban untuk pertanyaan "mana yang belum pernah".FROM produk LEFT JOIN detail_pesanan ON detail_pesanan.produk_id = produk.id
Latih: LEFT JOINUNION ALLMenumpuk hasil beberapa SELECT berkolom sama menjadi satu; di SQLite dipakai sebagai padanan ROLLUP untuk subtotal dan total.
Latih: Subtotal dan total ala ROLLUPINSERT INTO … SELECTMenyisipkan hasil sebuah SELECT ke tabel lain, misalnya baris staging yang belum ada di tabel dimensi.
Latih: ETL: staging, transformasi, dan INSERT…SELECTLogika, subkueri, dan CTE
COALESCE(a, b, …)Nilai pertama yang tidak NULL dari kiri; dipakai menulis keterangan pengganti untuk sel kosong.COALESCE(kota, 'Tidak diisi') AS kota
Latih: Mengganti NULL dengan COALESCECASE WHEN … THEN … ELSE … ENDMengubah nilai menjadi kategori. Syarat diperiksa dari atas dan berhenti di yang pertama benar; ELSE untuk sisanya.CASE WHEN jumlah >= 20 THEN 'grosir' WHEN jumlah >= 5 THEN 'partai' ELSE 'eceran' END
Latih: Membuat kategori dengan CASESUM(CASE WHEN … THEN 1 ELSE 0 END)Hitungan bersyarat sebagai kolom: beberapa kategori muncul berdampingan dalam satu baris hasil.SUM(CASE WHEN status = 'batal' THEN 1 ELSE 0 END) AS batal
Latih: Menghitung bersyarat dengan CASEWHERE x IN (SELECT …)Subkueri yang menghasilkan daftar nilai sebagai syarat. NOT IN membalik pertanyaannya menjadi "yang belum".WHERE id IN (SELECT produk_id FROM detail_pesanan WHERE pesanan_id = 3)
Latih: Subkueri dengan INWHERE x < (SELECT AVG(x) …)Subkueri skalar: satu nilai ringkasan yang dibandingkan dengan setiap baris dan dihitung ulang tiap kueri dijalankan.WHERE stok < (SELECT AVG(stok) FROM produk)
Latih: Subkueri yang menghasilkan satu nilaiWITH nama AS (…)CTE: hasil antara bernama yang dipakai seperti tabel di kueri utamanya. Beberapa CTE dipisah koma.WITH elektronik AS (SELECT * FROM produk WHERE kategori = 'Elektronik') SELECT nama FROM elektronik;
Latih: Menamai hasil antara dengan WITHFungsi SQLite
date(tanggal, '+7 day')Tanggal baru dari tanggal lama: '+1 month' menambah sebulan, 'start of month' mundur ke tanggal satu.SELECT date(tanggal, '+7 day') AS jatuh_tempo FROM pesanan;
Latih: Fungsi tanggal SQLitestrftime('%Y-%m', tanggal)Bagian tanggal sebagai teks: %Y tahun, %m bulan dua digit, %d tanggal. '%Y-%m' menjadi kolom periode untuk rekap bulanan.
Latih: Fungsi tanggal SQLiteupper / lower / substr / lengthMenyeragamkan huruf, mengambil potongan teks (posisi pertama bernomor 1), dan menghitung panjangnya.SELECT substr(nama, 1, 1) AS inisial FROM pelanggan;
Latih: Fungsi teks dan angka SQLiteround(x, n) / printf()Membulatkan ke n angka di belakang koma, dan menyusun teks berformat seperti label Rupiah.SELECT printf('Rp%d', harga) AS label FROM produk;
Latih: Fungsi teks dan angka SQLiteWindow function
ROW_NUMBER() OVER (PARTITION BY … ORDER BY …)Nomor urut 1, 2, 3 di dalam tiap kelompok PARTITION BY, menurut ORDER BY di dalam kurungnya.ROW_NUMBER() OVER (PARTITION BY kelas ORDER BY skor DESC)
Latih: Peringkat dengan ROW_NUMBER, RANK, dan NTILERANK() / DENSE_RANK()Peringkat yang memberi nilai kembar nomor sama. RANK melompati nomor sesudah nilai kembar; DENSE_RANK tidak.
Latih: Peringkat dengan ROW_NUMBER, RANK, dan NTILENTILE(n)Membagi baris yang sudah diurutkan menjadi n kelompok berukuran hampir sama, misalnya segmen pelanggan.
Latih: Peringkat dengan ROW_NUMBER, RANK, dan NTILELAG() / LEAD()Nilai dari baris sebelum atau sesudahnya menurut ORDER BY. Baris pertama tidak punya pendahulu, jadi LAG di sana NULL.derajat - LAG(derajat) OVER (PARTITION BY kota ORDER BY tanggal) AS perubahan
Latih: Membandingkan dengan baris sebelumnya: LAG dan LEADSUM() OVER (ORDER BY …)Total berjalan: jumlah dari baris pertama sampai baris yang sedang dihitung. OVER () kosong memberi total keseluruhan di setiap baris.SUM(masuk) OVER (ORDER BY tanggal) AS saldo
Latih: Total berjalan dan rata-rata bergerakROWS BETWEEN 2 PRECEDING AND CURRENT ROWFrame: dua baris sebelumnya ditambah baris ini — dasar rata-rata bergerak tiga baris.AVG(masuk) OVER (ORDER BY tanggal ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
Latih: Total berjalan dan rata-rata bergerak