Rumus Kueri SQL (Cheat Sheet)
Kumpulan panduan sintaks, formula, dan contoh nyata kueri SQL. Anda bisa menyalin sintaks atau mencobanya langsung ke playground.
Visualisasi JOIN Relasional
Pelajari cara kerja penggabungan data antar tabel (tabel pelanggan dan pesanan) menggunakan diagram Venn interaktif.
INNER JOIN
Hanya mencocokkan data yang ada di tabel pelanggan DAN tabel transaksi.
LEFT JOIN
Ambil semua pelanggan, serta detail pesanan mereka (jika ada pesanan).
RIGHT JOIN
Ambil seluruh data transaksi pesanan, beserta data pelanggan (jika ada pelanggan).
FULL JOIN
Gabung total. Ambil semua baris dari kedua tabel, isi NULL jika tidak berjodoh.
-- Pilih opsi Join di samping kiri
Katalog Tipe Data SQL
Kamus tipe data relasional yang paling umum digunakan beserta jangkauan penyimpanan dan contoh penggunaannya.
Teks vs Angka: Memahami Perbedaan antara '1' dan 1
Dalam dunia basis data, tipe data menentukan bagaimana nilai disimpan, diproses, dan dioptimalkan. Perbedaan antara karakter teks '1' dan angka numerik 1 sangat mendasar:
- Tipe SQL:
VARCHAR,CHAR,TEXT - Penulisan: Wajib dibungkus tanda kutip tunggal
'1' - Operasi Gabung:
'1' + '1'menghasilkan'11' - Guna: Nilai non-matematis (ID, No. HP, Kode Pos)
- Tipe SQL:
INT,DECIMAL,FLOAT - Penulisan: Ditulis langsung tanpa tanda kutip
1 - Operasi Hitung:
1 + 1menghasilkan2 - Guna: Nilai hitung (Harga, Stok, Kuantitas)
Tipe Data Primitif vs Non-Primitif
Dalam sistem basis data relasional, tipe data dibagi menjadi kategori primitif (dasar/tunggal) dan non-primitif (komposit/kompleks) untuk mempermudah penyimpanan nilai:
- Tipe SQL:
INT,VARCHAR,DATE,BOOLEAN - 1NF (Normalisasi): Memenuhi standar Bentuk Normal Pertama secara alami karena bersifat atomik.
- Penyimpanan: Menyimpan satu nilai tunggal yang tidak dapat dibagi lagi dalam satu sel data.
- Guna: Kolom utama untuk penyaringan (WHERE), pengurutan (ORDER BY), dan kunci relasi.
- Tipe SQL:
JSON,JSONB,ARRAY,ENUM - 1NF (Normalisasi): Sangat fleksibel, namun jika tidak hati-hati bisa melanggar normalisasi 1NF.
- Penyimpanan: Menyimpan sekumpulan data terstruktur, bersarang (nested), atau koleksi nilai dalam satu sel.
- Guna: Data metadata opsional, spesifikasi dinamis, atau daftar pilihan terstandar.
Desain & Logika Basis Data (Paling Mudah)
Belajar konsep dasar perancangan database, aturan logika matematika SQL, kunci relasi, dan cara menyusun tabel yang rapi dari awal tanpa pusing.
1. Aturan Logika di SQL (Mudah Dipahami)
Saat menyaring data menggunakan perintah WHERE, SQL menggunakan aturan logika matematika.
Bedanya dengan logika biasa, SQL punya 3 hasil akhir (bukan cuma Benar/Salah) karena ada nilai misterius
bernama NULL.
Contoh Nyata: "Mencari pesanan dari pelanggan Mugi (customer_id = 1) AND status pengirimannya 'Completed'."
Jika statusnya masih 'Pending' atau bukan pesanan Mugi, maka data tidak akan terpilih (FALSE). KEDUA syarat wajib terpenuhi sekaligus agar bernilai TRUE.
Contoh Nyata: "Mencari produk dengan kategori 'Electronics' OR stoknya > 100."
Cukup produk tersebut termasuk barang elektronik saja, ia sudah terpilih (TRUE). Cukup stoknya melimpah di atas 100 saja, ia juga terpilih (TRUE). Data hanya ditolak (FALSE) jika kategorinya bukan elektronik DAN stoknya tidak di atas 100.
Contoh Nyata: "Mencari pesanan dengan status NOT 'Completed'."
Artinya, pesanan dengan status 'Pending' atau 'Shipped' bernilai TRUE (lolos saringan), sedangkan pesanan yang sudah selesai ('Completed') bernilai FALSE (dikecualikan).
NULL artinya "Tidak Diketahui/Misteri" (bukan 0, bukan spasi kosong).
Contoh: Nilai tanggal pengiriman di suatu pesanan belum diisi (NULL). Jika ditanya "Apakah tanggal pengiriman > 2026-06-01?", kita tidak bisa menjawab Benar atau Salah. Hasilnya adalah UNKNOWN (Misteri)!
| A | B | AND | OR | NOT A | A → B |
|---|---|---|---|---|---|
| TRUE | TRUE | TRUE | TRUE | FALSE | TRUE |
| TRUE | FALSE | FALSE | TRUE | FALSE | FALSE |
| TRUE | UNKNOWN | UNKNOWN | TRUE | FALSE | UNKNOWN |
| FALSE | FALSE | FALSE | FALSE | TRUE | TRUE |
| FALSE | UNKNOWN | FALSE | UNKNOWN | TRUE | TRUE |
| UNKNOWN | UNKNOWN | UNKNOWN | UNKNOWN | UNKNOWN | UNKNOWN |
π Konsep Logika Tambahan di SQL
Selain tiga logika dasar di atas, ada konsep logika matematika lain yang sangat sering Anda temui di SQL secara langsung atau tidak langsung:
Hanya bernilai TRUE jika salah satu saja yang benar, bukan keduanya. Di SQL (PostgreSQL), operator ini dilambangkan dengan # atau ditulis menggunakan logika: (A OR B) AND NOT (A AND B).
Dalam matematika ditulis P => Q. Di SQL, implikasi diwakili oleh perintah CASE WHEN. Contoh: CASE WHEN stok = 0 THEN 'Habis' ELSE 'Tersedia' END.
β’ Tautologi (Selalu Benar): Di SQL sering ditulis WHERE 1=1. Ini trik populer agar kueri dinamis tidak error saat ditambahi filter AND tambahan. β’ Kontradiksi (Selalu Salah): Di SQL ditulis WHERE 1=0. Trik ini dipakai saat ingin menduplikasi struktur tabel kosong tanpa menyalin data.
2. Cara Menghubungkan Tabel: Primary Key (PK) & Foreign Key (FK)
Bagaimana cara komputer tahu kalau suatu data di tabel A tersambung dengan data di tabel B? Jawabannya adalah lewat **kunci penghubung (Key)**. Mari kita pahami dengan analogi super sederhana di bawah ini!
π Primary Key (Kunci Utama - Seperti ID Pelanggan)
Bayangkan sistem keanggotaan toko. Setiap pembeli baru wajib memiliki ID Pelanggan yang unik. Tidak boleh ada dua pelanggan dengan ID yang sama, dan ID ini tidak boleh kosong.
- Peran di Database: Menjadi tanda pengenal unik untuk setiap baris data di tabel utama agar tidak tertukar.
- Aturan Wajib: Datanya **tidak boleh kembar** dan **tidak boleh kosong** (NOT NULL).
- Contoh Nyata: Kolom
customer_iddi tabel pelanggan.
π Foreign Key (Kunci Tamu/Asing - Seperti ID Pelanggan di Nota Pesanan)
Bayangkan ketika seorang pelanggan membuat pesanan belanja, kasir mencatat ID Pelanggan tersebut di dalam nota pesanan. Dengan melihat ID Pelanggan di nota pesanan, kita bisa mengetahui siapa nama pelanggan dan profil lengkapnya dari tabel pelanggan utama.
- Peran di Database: Kunci perwakilan di tabel anak yang mencatat Primary Key tabel induk untuk menghubungkan kedua tabel.
- Aturan Wajib: Nilai yang dimasukkan harus sudah ada di daftar Primary Key tabel induk.
- Contoh Nyata: Kolom
customer_iddi tabel pesanan belanja.
Arahkan kursor Anda ke kolom Foreign Key di tabel Pesanan untuk melihat pendaran relasinya ke tabel Pelanggan.
3. Normalisasi Database: Seni Merapikan Berkas Transaksi (1NF, 2NF, 3NF)
Normalisasi itu seperti **merapikan lemari berkas transaksi pelanggan & pesanan yang berantakan**. Jika semua jenis informasi (profil pelanggan, daftar produk, detail pesanan) ditumpuk di satu lembar berkas besar, kamu pasti kesulitan melacak transaksi tertentu, dan lemari berkas cepat penuh dengan data duplikat (redundant). Dengan memisahkan data ke laci-laci tabel khusus yang teratur, database kita menjadi rapi, cepat diakses, dan bebas eror.
ποΈ 1NF (Bentuk Normal Pertama) - Satu Baris Hanya Boleh Satu Produk
Aturan Gampang: Setiap kolom di tabel database hanya boleh menyimpan **satu nilai saja**. Tidak boleh ada data yang digabung dalam satu kolom menggunakan tanda koma (seperti daftar belanjaan dalam satu sel).
| customer_id | first_name | purchased_products |
|---|---|---|
| 1 | Mugi | iPhone, Laptop, Kopi |
Eror/Masalah: Komputer akan kesulitan mencari siapa saja yang membeli 'Laptop', karena namanya menumpuk jadi satu kalimat dengan 'iPhone' dan 'Kopi'.
| customer_id | first_name | product_name |
|---|---|---|
| 1 | Mugi | iPhone |
| 1 | Mugi | Laptop |
| 1 | Mugi | Kopi |
Sekarang, setiap produk ditulis di barisnya masing-masing. Komputer bisa dengan cepat memfilter dan mencari barang tertentu.
Di pemrograman (seperti JavaScript/Python), kita biasa menyimpan daftar item dalam satu variabel bernama Array (contoh: ['iPhone', 'Laptop', 'Kopi']).
Namun di SQL / Database Relasional, menyimpan Array langsung di dalam satu kolom/sel tabel melanggar aturan 1NF (Bentuk Normal Pertama). Database didesain agar setiap kolom hanya menyimpan satu nilai tunggal (atomik) untuk memudahkan pencarian, penyaringan (WHERE), dan pengindeksan secara cepat.
Solusinya: Kita harus membongkar array tersebut menjadi baris-baris terpisah (seperti tabel di atas kanan) atau memisahkannya ke tabel relasi tersendiri.
ποΈ 2NF (Bentuk Normal Kedua) - Pisahkan Tabel Pelanggan dari Transaksi
Aturan Gampang: Tabel harus sudah memenuhi syarat 1NF, lalu **pisahkan kolom data yang tidak nyambung dengan kunci utama**. Jangan mencampur informasi profil pelanggan (nama & negara) langsung di dalam tabel transaksi pesanan belanja, karena profil mereka akan tertulis berulang-ulang untuk setiap transaksi baru.
| order_id | customer_id | customer_name | customer_country | quantity |
|---|---|---|---|---|
| 1001 | 1 | Mugi | Indonesia | 1 |
| 1003 | 1 | Mugi | Indonesia | 3 |
Eror/Masalah (Duplikat Boros): Jika Mugi belanja 100 kali, nama 'Mugi' dan negara 'Indonesia' akan diketik ulang 100 kali. Jika Mugi pindah ke Jepang, kita harus mengedit 100 baris. Kalau ada yang terlewat, datanya jadi rusak!
| customer_id (PK) | customer_name | customer_country |
|---|---|---|
| 1 | Mugi | Indonesia |
| order_id (PK) | customer_id (FK) | quantity |
|---|---|---|
| 1001 | 1 | 1 |
| 1003 | 1 | 3 |
Profil Mugi cukup dicatat **1 kali** saja di tabel khusus pelanggan. Di tabel
transaksi pesanan, kita cukup menulis angka customer_id = 1 sebagai penghubung (Foreign
Key). Hemat tempat dan aman!
ποΈ 3NF (Bentuk Normal Ketiga) - Hapus Hubungan Alamat Berantai
Aturan Gampang: Tabel harus sudah memenuhi syarat 2NF, lalu **pastikan semua kolom bergantung langsung pada kunci utamanya, bukan bergantung secara berantai melalui kolom lain**. Contoh berantai: ID Pelanggan menentukan Kode Pos, lalu Kode Pos menentukan Nama Kota. Hubungan Kode Pos ke Kota harus dipisah ke tabel tersendiri.
| customer_id (PK) | first_name | zip_code | city |
|---|---|---|---|
| 1 | Mugi | 60111 | Surabaya |
| 5 | Dian | 60111 | Surabaya |
Eror/Masalah: Nama kota 'Surabaya' ditulis berulang kali untuk setiap orang yang tinggal di kode pos yang sama. Sangat membuang-buang memori database.
| customer_id (PK) | first_name | zip_code (FK) |
|---|---|---|
| 1 | Mugi | 60111 |
| 5 | Dian | 60111 |
| zip_code (PK) | city |
|---|---|
| 60111 | Surabaya |
Nama kota diikat rapi ke data kode pos di tabel terpisah. Jika ada perubahan nama kota, kita cukup mengeditnya sekali saja di tabel kode pos.
4. Entity Relationship Diagram (ERD) - Cetak Biru Rumah Database
Sebelum membangun rumah, arsitek butuh **gambar denah**. Di database, denah ini disebut **ERD (Entity Relationship Diagram)**. Diagram ini memetakan bagaimana tabel-tabel e-commerce mock kita saling mengobrol dan terhubung.
β’ Logika Penghubung (Identitas): Agar data antar tabel tersambung, identitas utama (PK - Primary Key) dari tabel induk disematkan ke tabel anak (sebagai FK - Foreign Key).
- Identitas Pelanggan (
customer_id dari tabel customers) ada di tabel orders.
- Identitas Produk (
product_id dari tabel products) ada di tabel orders.
β’ Hubungan 1 ke N (One-to-Many): Satu Pelanggan (1) dapat membuat Banyak transaksi Pesanan (N) seiring waktu.
β’ Arahkan kursor (hover) pada tabel di bawah ini untuk melihat bagaimana jalur hubungan antar kunci (PK/FK) menyala dengan efek neon glow!
5. Pengindeksan (Indexing): Cluster vs Non-Cluster Index di PostgreSQL
Indeks (Index) seperti **daftar indeks alfabetis atau daftar isi di bagian belakang buku tebal**. Tanpa indeks, database harus membaca seluruh isi tabel lembar demi lembar (*Table Scan*) untuk mencari satu data. Dengan indeks, database bisa langsung meloncat ke halaman yang tepat dalam hitungan milidetik!
π Clustered Index (Indeks Terkluster)
Mengatur dan mengurutkan baris data fisik di dalam harddisk secara berurutan berdasarkan kolom indeks tersebut.
- Urutan Fisik: Baris data di tabel disusun fisik di harddisk sesuai urutan indeks.
- Batasan: Hanya boleh ada **satu** clustered index per tabel (karena data fisik hanya bisa diurutkan dalam satu cara).
- Keunikan PostgreSQL: PostgreSQL tidak memiliki clustered index otomatis/dinamis. PostgreSQL menyediakan perintah
CLUSTER table USING index;yang melakukan **pengurutan fisik satu kali**. Jika ada data baru (INSERT), data tersebut tidak otomatis terurut fisik, sehingga perintah CLUSTER harus dijalankan ulang secara berkala.
π Non-Clustered Index (Indeks Biasa)
Membuat struktur indeks penunjuk terpisah dari tabel data utama. Baris data fisik di harddisk dibiarkan acak/tidak teratur.
- Urutan Fisik: Baris data fisik bebas acak. Struktur indeks menyimpan kunci pencarian dan *pointer* (alamat baris/TID) ke data aslinya.
- Jumlah: Kita bisa membuat **banyak** non-clustered index pada satu tabel untuk berbagai kolom query.
- Keuntungan: Sangat fleksibel untuk mempercepat berbagai kueri pencarian kolom yang berbeda tanpa merombak tatanan data fisik tabel.
β‘ Linear Scan (Pencarian Linear / Table Scan)
Metode pencarian data paling dasar tanpa indeks. Database memindai baris satu demi satu secara linear (berurutan) dari awal hingga akhir.
- Kompleksitas O(N): Waktu pencarian berbanding lurus dengan jumlah baris data. Jika tabel memiliki 1 juta baris, database harus melakukan 1 juta kali pembacaan.
- Kapan Terjadi: Terjadi secara otomatis saat kolom yang dicari di klausa
WHEREtidak memiliki indeks, atau ketika database menganggap membaca seluruh tabel (sequential scan) lebih cepat daripada menggunakan indeks (pada tabel yang sangat kecil). - Solusi Indeks: Menggunakan indeks memangkas kompleksitas menjadi O(log N) (seperti mencari kata di kamus lewat tab huruf pertama, bukan membaca halaman per halaman).
| Fitur | Cluster Index | Non-Cluster Index |
|---|---|---|
| Urutan Data Fisik | Terurut secara fisik di disk | Acak / Tidak teratur di disk |
| Jumlah Maksimal | Hanya 1 per tabel | Bisa banyak per tabel |
| Penyimpanan | Menyatu dengan tabel data | Terpisah sebagai objek indeks |
| Kecepatan Kueri Urutan | Sangat cepat (Range & ORDER BY) | Lebih lambat karena butuh lookup |
| Biaya Pembaruan (DML) | Lebih berat saat CLUSTER dijalankan | Sedang (memperbarui index pointer) |
| Sifat Otomatis | Manual (perlu kueri CLUSTER berkala) | Otomatis diupdate saat data masuk |
-- 1. Buat indeks biasa (non-cluster) terlebih dahulu
CREATE INDEX idx_pesanan_tgl ON orders (order_date);
-- 2. Urutkan fisik tabel berdasarkan indeks tersebut (Clustering)
CLUSTER orders USING idx_pesanan_tgl;
idx_pesanan_tgl pada tabel orders berdasarkan kolom order_date, lalu susun ulang tata letak fisik baris data di tabel orders agar mengalir terurut mengikuti susunan indeks tersebut.β
6. Dimensi vs Metrik: Logika Sumbu X & Y di SQL & Dashboard
Konsep Dimensi dan Metrik di dashboard bekerja menggunakan prinsip koordinat matematika Sumbu X & Y yang diimplementasikan melalui perintah GROUP BY di SQL. Dimensi membagi data menjadi kategori (label pada sumbu X), sedangkan Metrik menghitung nilai kuantitatifnya (tinggi batang pada sumbu Y).
π Dimensi (Sumbu X) β Kategori & Label
Dimensi menjawab pertanyaan 'Siapa, Apa, Kapan, Di mana'. Ini adalah atribut berjenis teks, tanggal, lokasi, atau kategori yang memotong data Anda. Di grafik, dimensi berfungsi sebagai label pada Sumbu X (horisontal).
- Contoh di Dashboard: Nama Produk, Negara Pelanggan, Kategori, Status Order.
- Padanan di SQL: Kolom biasa yang Anda tulis di
SELECTdan wajib diletakkan di dalamGROUP BY.
π Metrik (Sumbu Y) β Angka & Hasil Hitung
Metrik menjawab pertanyaan 'Berapa banyak'. Ini adalah nilai kuantitatif atau angka hasil perhitungan yang ingin Anda ukur. Di grafik, metrik berfungsi sebagai tinggi/besar batang pada Sumbu Y (vertikal).
- Contoh di Dashboard: Total Penjualan, Jumlah Transaksi, Rata-rata Kuantitas.
- Padanan di SQL: Fungsi agregasi matematika seperti
COUNT(),SUM(),AVG(),MIN(),MAX().
π Perbedaan Kolom/Baris vs Dimensi/Metrik
Kolom (Columns) & Baris (Rows) adalah bentuk fisik/struktur penyimpanan data Anda. Sedangkan Dimensi & Metrik adalah peran/klasifikasi kolom tersebut saat kita menganalisis data.
β’ Kolom kategori (teks/tanggal) berperan sebagai Dimensi.
β’ Kolom angka (yang dihitung/agregasi) berperan sebagai Metrik.
β’ Setelah data dikelompokkan dengan GROUP BY, setiap nilai unik dari Dimensi akan menjadi Baris (Row) baru di hasil analisis Anda.
π Regresi Linear & Trendline (Garis Tren) di SQL
Menghubungkan Sumbu X (Dimensi) dan Sumbu Y (Metrik) dalam korelasi tren garis lurus ($y = mx + c$). Berguna untuk memprediksi perubahan nilai metrik berdasarkan dimensinya.
- Garis Tren di Dashboard: Saat Anda mencentang opsi 'Trendline' di chart dashboard, sistem sebenarnya menghitung formula regresi linear untuk menggambar garis lurus di antara titik-titik data Anda.
- Fungsi Regresi di SQL: Database modern (seperti PostgreSQL) menyediakan fungsi statistik bawaan untuk menghitung nilai ini secara langsung tanpa perlu ekspor data.
regr_slope(Y, X)menghitung kemiringan garis ($m$), sedangkanregr_intercept(Y, X)menghitung titik potong sumbu Y ($c$).
SELECT
regr_slope(o.quantity, o.order_id) AS trend_slope,
regr_intercept(o.quantity, o.order_id) AS trend_intercept
FROM orders o;
-- Pilih opsi di samping kiri
7. Keamanan Basis Data & SQL Injection
Keamanan adalah aspek krusial dalam pengelolaan database. Salah satu ancaman terbesar bagi aplikasi database adalah serangan SQL Injection (SQLi), di mana penyusup memanfaatkan celah pada input kueri yang tidak disaring untuk memanipulasi atau mencuri data.
π‘οΈ CIA Triad: Pilar Utama Keamanan Basis Data
Tujuan utama dari keamanan basis data adalah untuk menjaga CIA Triad (Kerahasiaan, integritas, dan ketersediaan data):
β’ Confidentiality (Kerahasiaan): Menjamin data tidak bocor ke pihak yang tidak sah.
β’ Integrity (Integritas): Menjaga keaslian, keakuratan, dan mencegah perubahan data yang tidak sah.
β’ Availability (Ketersediaan): Menjamin data selalu dapat diakses saat dibutuhkan oleh pengguna yang sah.
π₯ Memahami SQL Injection (SQLi)
Analogi Sederhana: Bayangkan Anda mengirim paket lewat kurir. Di alamat penerima, Anda menulis: "Antar ke Kamar 5. DAN setelah masuk, curi kunci brankas di meja." Kurir yang lugu akan membaca seluruh instruksi tersebut dan mematuhinya secara buta. Begitu pula database: jika input teks dari pengguna langsung digabungkan ke query SQL tanpa disaring, database akan menjalankan perintah berbahaya tersebut!
Mugi (Aman) atau ketik ' OR '1'='1 (Bahaya!).
π‘οΈ Solusi: Prepared Statements (Kueri Berparameter)
Untuk mencegah SQL Injection, kita tidak boleh menggabungkan teks input secara langsung (concatenation). Gunakan Prepared Statements, di mana database memisahkan struktur query dengan datanya terlebih dahulu menggunakan tanda tanya/placeholder (? atau $1). Input berbahaya seperti ' OR '1'='1 akan diperlakukan murni sebagai teks username biasa, bukan perintah SQL. Hasilnya kueri akan mencari nama pengguna bernama ' OR '1'='1 (dan tidak menemukan apa-apa), sehingga data aman!
// AMAN: Nilai diinput terpisah sebagai array parameter
db.query('SELECT * FROM customers WHERE first_name = $1', [userInput]);
π Pengelolaan Hak Akses & Peran (DCL & CREATE ROLE)
Mengapa membatasi hak akses itu penting?
Melalui konsep DCL (GRANT / REVOKE), kita menerapkan Prinsip Hak Akses Terendah (Least Privilege) dan membuat peran (role) di PostgreSQL dengan CREATE ROLE.
π Keamanan Lanjutan & Audit PostgreSQL
Mengamankan server PostgreSQL memerlukan konfigurasi hak akses yang ketat dan pencatatan riwayat (audit trail) aktivitas database.
π Ringkasan Konsep & Istilah Keamanan Basis Data
Untuk memperkuat pemahaman Anda mengenai materi keamanan basis data, berikut adalah poin-poin materi penting:
β’ Tujuan Utama & CIA Triad: Tujuan utama keamanan basis data adalah untuk menjaga kerahasiaan, integritas, dan ketersediaan data (yang membentuk konsep CIA Triad: Confidentiality, Integrity, Availability).
β’ Hak Akses (SELECT): Pemberian hak akses untuk membaca data tabel dilakukan dengan perintah GRANT SELECT.
β’ Mencabut Hak Akses: Untuk menarik atau membatalkan kembali hak akses pengguna, digunakan perintah REVOKE.
β’ Pembuatan Role di PostgreSQL: Perintah resmi untuk membuat role atau peran baru di PostgreSQL adalah CREATE ROLE.
Kuis Evaluasi SQL & Database
Uji pemahaman Anda tentang semua materi query SQL, JOIN, normalisasi database, pengindeksan, dan pilar keamanan basis data yang ada di website ini.
Pilih Mode Kuis
Pilih format tantangan yang ingin Anda mainkan di bawah ini:
Mode Pilihan Ganda
Uji pemahaman teori & dasar database dengan 50 soal pilihan ganda dari yang termudah hingga tersulit.
Mode Tulis Kueri SQL
Tantangan menulis 50 kueri SQL interaktif langsung di database mockup dari yang termudah hingga tersulit.