Cheat Sheet SQL
Terakhir diperbarui
Membaca data (SELECT)
Inti dari SQL: membaca baris dari satu tabel atau lebih.
| Operasi | Sintaks |
|---|---|
| Memilih semua kolom | SELECT * FROM users; |
| Memilih kolom tertentu | SELECT id, name FROM users; |
| Mengganti nama kolom (alias) | SELECT name AS full_name FROM users; |
| Nilai unik | SELECT DISTINCT country FROM users; |
| Membatasi jumlah baris | SELECT * FROM users LIMIT 10; |
| Melewati lalu membatasi (paging) | SELECT * FROM users LIMIT 10 OFFSET 20; |
| Menghitung baris | SELECT COUNT(*) FROM users; |
Menyaring baris (WHERE)
Mempersempit baris yang dikembalikan query.
| Operasi | Sintaks |
|---|---|
| Sama dengan / perbandingan | WHERE age >= 18 |
| Beberapa kondisi | WHERE age >= 18 AND country = 'US' |
| Salah satu kondisi | WHERE role = 'admin' OR role = 'owner' |
| Termasuk dalam himpunan | WHERE country IN ('US', 'CA', 'MX') |
| Dalam rentang | WHERE price BETWEEN 10 AND 50 |
| Pencocokan pola | WHERE email LIKE '%@gmail.com' |
| Null / bukan null | WHERE deleted_at IS NULL |
| Negasi | WHERE status NOT IN ('archived') |
Mengurutkan & mengelompokkan
| Operasi | Sintaks |
|---|---|
| Urut naik (default) | ORDER BY created_at |
| Urut turun | ORDER BY created_at DESC |
| Mengurutkan berdasarkan beberapa kolom | ORDER BY country, name DESC |
| Mengelompokkan baris | SELECT country, COUNT(*) FROM users GROUP BY country; |
| Menyaring kelompok | GROUP BY country HAVING COUNT(*) > 100 |
Join
Menggabungkan baris dari dua tabel berdasarkan kolom yang cocok.
| Jenis join | Hasil | Sintaks |
|---|---|---|
| INNER JOIN | Hanya baris yang cocok di kedua tabel | FROM orders o INNER JOIN users u ON o.user_id = u.id |
| LEFT JOIN | Semua baris kiri + yang cocok (selain itu null) | FROM users u LEFT JOIN orders o ON o.user_id = u.id |
| RIGHT JOIN | Semua baris kanan + yang cocok | FROM orders o RIGHT JOIN users u ON o.user_id = u.id |
| FULL OUTER JOIN | Semua baris dari kedua sisi | FROM a FULL OUTER JOIN b ON a.id = b.a_id |
| CROSS JOIN | Setiap kombinasi (kartesius) | FROM sizes CROSS JOIN colors |
| Self join | Tabel yang digabungkan (join) dengan dirinya sendiri | FROM employees e JOIN employees m ON e.manager_id = m.id |
Fungsi agregat
Menghitung satu nilai dari sekelompok baris.
| Fungsi | Kegunaan |
|---|---|
COUNT(*) | Jumlah baris |
COUNT(col) | Jumlah nilai yang tidak null |
SUM(col) | Total kolom numerik |
AVG(col) | Nilai rata-rata |
MIN(col) / MAX(col) | Nilai terkecil / terbesar |
STRING_AGG(col, ',') | Menggabungkan nilai (Postgres; GROUP_CONCAT di MySQL) |
Window function
Menghitung atas sekumpulan baris tanpa meringkasnya menjadi satu.
| Fungsi | Sintaks |
|---|---|
| Nomor baris | ROW_NUMBER() OVER (ORDER BY score DESC) |
| Peringkat (dengan celah) | RANK() OVER (PARTITION BY country ORDER BY score DESC) |
| Peringkat rapat (dense rank) | DENSE_RANK() OVER (ORDER BY score DESC) |
| Total berjalan | SUM(amount) OVER (ORDER BY created_at) |
| Baris sebelumnya / berikutnya | LAG(score) OVER (ORDER BY date), LEAD(score) OVER (...) |
Mengubah data (INSERT, UPDATE, DELETE)
| Operasi | Sintaks |
|---|---|
| Menyisipkan satu baris | INSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com'); |
| Menyisipkan beberapa baris | INSERT INTO users (name) VALUES ('Ada'), ('Alan'); |
| Memperbarui baris | UPDATE users SET active = true WHERE id = 1; |
| Menghapus baris | DELETE FROM users WHERE active = false; |
| Upsert (Postgres/SQLite) | INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name; |
Mendefinisikan tabel (DDL)
| Operasi | Sintaks |
|---|---|
| Membuat tabel | CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL); |
| Menambah kolom | ALTER TABLE users ADD COLUMN age INTEGER; |
| Menghapus kolom | ALTER TABLE users DROP COLUMN age; |
| Menghapus tabel | DROP TABLE users; |
| Membuat index | CREATE INDEX idx_users_email ON users (email); |
| Foreign key | FOREIGN KEY (user_id) REFERENCES users (id) |
Semua pernyataan, klausa, dan join SQL yang sering kamu pakai, dalam satu halaman. Cheat sheet SQL ini adalah referensi cepat untuk membaca dan mengubah data relasional: klausa SELECT, empat jenis JOIN, agregasi, serta DDL dan DML untuk membuat dan memperbarui tabel.
Sintaks di sini adalah SQL ANSI standar dan berjalan di PostgreSQL, MySQL, SQLite, dan SQL Server, kecuali jika disebutkan lain. Salin yang kamu butuhkan, atau coba setiap query langsung di playground SQL, tanpa perlu menginstal database. Baru mengenal database? Kursus SQL interaktif gratis dari Coddy mengajakmu belajar query, join, dan agregasi.
FAQ cheat sheet SQL
Apakah cheat sheet SQL ini gratis?
Ya. Cheat sheet SQL ini sepenuhnya gratis, tanpa perlu daftar. Simpan di bookmark dan kembali kapan pun kamu perlu mencari klausa, join, atau fungsi.
Apakah ini berlaku untuk MySQL, PostgreSQL, dan SQLite?
SELECT, WHERE, JOIN, GROUP BY, dan DDL di sini adalah SQL ANSI standar dan berjalan sama di MySQL, PostgreSQL, SQLite, dan SQL Server. Beberapa fitur lanjutan berbeda antar dialek, yang paling umum adalah upsert dan agregasi string, dan baris-baris itu menyebutkan perbedaannya.Apa perbedaan INNER JOIN dan LEFT JOIN?
INNER JOIN hanya mengembalikan baris yang punya pasangan di kedua tabel. LEFT JOIN mengembalikan setiap baris dari tabel kiri (pertama) dan mengisi NULL untuk kolom dari tabel kanan jika tidak ada pasangan. Ini berguna saat kamu ingin menampilkan semua user meskipun sebagian belum punya pesanan.Bisakah saya berlatih perintah SQL ini secara online?
SELECT sampai join dan window function, langkah demi langkah.Apakah cheat sheet ini cocok untuk pemula?
Cocok. Isinya disusun mulai dari operasi yang paling umum (membaca dan menyaring data) sampai yang lanjutan (window function), jadi kamu bisa memakai bagian atas sejak hari pertama dan pelan-pelan menguasai sisanya.