Cheatsheet SQL Lengkap

Panduan lengkap dan praktis untuk menguasai SQL dalam bahasa Indonesia

DDL (Data Definition Language)

DDL digunakan untuk mendefinisikan dan mengelola struktur database seperti tabel, indeks, dan skema. Perintah ini bersifat permanen dan sering digunakan saat merancang database.

Perintah Sintaks Deskripsi
CREATE DATABASE CREATE DATABASE nama_database; Membuat database baru.
CREATE TABLE CREATE TABLE nama_tabel (kolom1 tipe_data CONSTRAINT, ...); Membuat tabel dengan kolom dan batasan tertentu.
ALTER TABLE ALTER TABLE nama_tabel ADD/MODIFY/DROP kolom tipe_data; Mengubah struktur tabel (menambah, mengubah, atau menghapus kolom).
DROP TABLE DROP TABLE nama_tabel [CASCADE]; Menghapus tabel beserta data dan ketergantungannya jika CASCADE digunakan.
CREATE INDEX CREATE INDEX nama_indeks ON nama_tabel (kolom); Meningkatkan performa pencarian dengan indeks.

Contoh: Membuat dan Mengubah Tabel


-- Membuat tabel
CREATE TABLE karyawan (
    id_karyawan INT PRIMARY KEY AUTO_INCREMENT,
    nama VARCHAR(100) NOT NULL,
    gaji DECIMAL(10,2),
    tanggal_masuk DATE
);

-- Menambahkan kolom baru
ALTER TABLE karyawan ADD jabatan VARCHAR(50);

-- Menghapus tabel
DROP TABLE karyawan;
                

Contoh ini menunjukkan pembuatan tabel "karyawan", penambahan kolom "jabatan", dan penghapusan tabel.

Kesalahan Umum

  • Lupa menentukan tipe data atau batasan seperti NOT NULL saat membuat kolom.
  • Mencoba menghapus tabel yang memiliki relasi foreign key tanpa opsi CASCADE.
  • Menggunakan tipe data yang tidak sesuai (misalnya, VARCHAR(10) untuk teks panjang).
  • Tidak memeriksa apakah nama tabel sudah ada sebelum membuatnya.

DML (Data Manipulation Language)

DML digunakan untuk memanipulasi data dalam tabel. Perintah ini bersifat sementara sampai di-COMMIT dan dapat dibatalkan dengan ROLLBACK.

Perintah Sintaks Deskripsi
SELECT SELECT kolom FROM tabel [WHERE kondisi] [ORDER BY kolom]; Mengambil data dengan filter dan pengurutan opsional.
INSERT INSERT INTO tabel (kolom1, ...) VALUES (nilai1, ...); Menambahkan data baru.
UPDATE UPDATE tabel SET kolom = nilai [WHERE kondisi]; Mengubah data yang ada.
DELETE DELETE FROM tabel [WHERE kondisi]; Menghapus data tertentu.

Contoh: Manipulasi Data


-- Menambahkan data
INSERT INTO karyawan (nama, gaji, tanggal_masuk) 
VALUES ('Budi', 5000000.00, '2023-01-15');

-- Mengambil data
SELECT nama, gaji FROM karyawan WHERE gaji > 4000000 ORDER BY gaji DESC;

-- Mengubah data
UPDATE karyawan SET gaji = 5500000.00 WHERE nama = 'Budi';

-- Menghapus data
DELETE FROM karyawan WHERE tanggal_masuk < '2023-01-01';
                

Contoh ini mencakup penambahan, pengambilan, pengubahan, dan penghapusan data karyawan.

Kesalahan Umum

  • Melupakan WHERE pada UPDATE atau DELETE, menyebabkan perubahan pada semua baris.
  • Memasukkan nilai yang tidak sesuai dengan tipe data kolom (misalnya, teks ke kolom INT).
  • Tidak menggunakan ORDER BY saat urutan hasil penting.
  • Mengabaikan batasan NOT NULL saat INSERT.

Fungsi Agregat

Fungsi agregat mengolah sekumpulan data untuk menghasilkan satu nilai ringkasan, sering digunakan dengan GROUP BY dan HAVING.

Fungsi Sintaks Deskripsi
COUNT COUNT(kolom | *) Menghitung jumlah baris atau nilai non-NULL.
SUM SUM(kolom) Menjumlahkan nilai numerik.
AVG AVG(kolom) Menghitung rata-rata.
MIN MIN(kolom) Mencari nilai terkecil.
MAX MAX(kolom) Mencari nilai terbesar.

Contoh: Analisis Data


SELECT 
    jabatan,
    COUNT(*) AS jumlah_karyawan,
    AVG(gaji) AS rata_rata_gaji,
    MAX(gaji) AS gaji_tertinggi
FROM karyawan
GROUP BY jabatan
HAVING COUNT(*) > 5;
                

Query ini menghitung jumlah karyawan, rata-rata gaji, dan gaji tertinggi per jabatan, hanya menampilkan jabatan dengan lebih dari 5 karyawan.

Kesalahan Umum

  • Menggunakan fungsi agregat tanpa GROUP BY saat mengelompokkan data diperlukan.
  • Mencoba SUM atau AVG pada kolom non-numerik.
  • Melupakan HAVING untuk memfilter hasil agregat (tidak bisa pakai WHERE).
  • Tidak menangani nilai NULL yang dapat memengaruhi hasil.

JOIN

JOIN menggabungkan data dari beberapa tabel berdasarkan kolom terkait, penting untuk analisis relasional.

Tipe JOIN Sintaks Deskripsi
INNER JOIN tabel1 INNER JOIN tabel2 ON kondisi Data yang cocok di kedua tabel.
LEFT JOIN tabel1 LEFT JOIN tabel2 ON kondisi Semua data dari tabel kiri, cocok atau NULL dari kanan.
RIGHT JOIN tabel1 RIGHT JOIN tabel2 ON kondisi Semua data dari tabel kanan, cocok atau NULL dari kiri.
FULL JOIN tabel1 FULL JOIN tabel2 ON kondisi Semua data dari kedua tabel, cocok atau NULL.

Contoh: Menggabungkan Tabel


SELECT k.nama, d.nama_departemen
FROM karyawan k
LEFT JOIN departemen d ON k.id_departemen = d.id_departemen;
                

Query ini mengambil nama karyawan dan nama departemennya, termasuk karyawan tanpa departemen.

Kesalahan Umum

  • Melupakan ON, menyebabkan hasil gabungan yang tidak diinginkan (Cartesian product).
  • Salah memilih tipe JOIN, misalnya menggunakan INNER saat LEFT dibutuhkan.
  • Tidak memeriksa duplikat kolom saat JOIN beberapa tabel.
  • Mengabaikan performa saat JOIN tabel besar tanpa indeks.

VIEW

VIEW adalah tabel virtual yang menyimpan hasil query, berguna untuk keamanan, efisiensi, dan penyederhanaan.

Perintah Sintaks Deskripsi
CREATE VIEW CREATE [OR REPLACE] VIEW nama AS SELECT ...; Membuat atau mengganti view.
DROP VIEW DROP VIEW nama [IF EXISTS]; Menghapus view dengan opsi keamanan.
SELECT dari VIEW SELECT * FROM nama_view; Menggunakan view seperti tabel.

Contoh: Membuat dan Menggunakan VIEW


CREATE VIEW v_karyawan_gaji AS
SELECT nama, gaji, jabatan
FROM karyawan
WHERE gaji > 5000000;

-- Mengambil data dari VIEW
SELECT * FROM v_karyawan_gaji WHERE jabatan = 'Manajer';
                

VIEW ini menyimpan data karyawan dengan gaji di atas 5 juta, kemudian digunakan untuk filter lebih lanjut.

Kesalahan Umum

  • Mencoba INSERT/UPDATE pada VIEW yang tidak mendukungnya (misalnya, dengan JOIN).
  • Melupakan bahwa VIEW mencerminkan perubahan data tabel asli secara real-time.
  • Tidak menggunakan OR REPLACE saat ingin memperbarui VIEW yang sudah ada.
  • Membuat VIEW terlalu kompleks sehingga performa menurun.