Pelajari bagaimana SQL benar-benar berjalan, satu gagasan setiap kali

Setiap pelajaran memuat dataset kecil dan satu query, membuka langkah yang perlu dilihat, memberi tahu apa yang perlu diperhatikan, dan memberi satu perubahan untuk dicoba.

Cara query berjalan

  1. Urutan menulis bukan urutan eksekusi
  2. Alias baru ada setelah SELECT

Kondisi dan NULL

  1. AND berarti semua kondisi harus TRUE
  2. AND dihitung lebih dulu daripada OR
  3. IN, LIKE dan BETWEEN hanyalah kondisi biasa
  4. NULL bukan FALSE, tetapi juga bukan TRUE
  5. Mengecek NULL harus dengan IS NULL
  6. COALESCE memberi nilai pengganti untuk NULL

Menghitung nilai

  1. CASE memilih cabang pertama yang bernilai TRUE
  2. Casting dan fungsi tanggal bisa dipakai di SELECT maupun WHERE

Urutan dan batas

  1. ORDER BY berjalan belakangan, dan urutan baris bernilai sama tidak pasti
  2. Kamu bisa menentukan posisi NULL saat mengurutkan
  3. LIMIT tanpa ORDER BY hasilnya untung-untungan

Join

  1. INNER JOIN hanya menyimpan baris yang punya pasangan
  2. LEFT JOIN menyimpan semua baris kiri dan mengisi yang kosong dengan NULL
  3. Join bisa melipatgandakan baris
  4. WHERE pada tabel kanan mengubah LEFT JOIN menjadi INNER JOIN
  5. Mencari baris tanpa pasangan dengan anti-join
  6. Join berjalan dari kiri ke kanan, satu langkah per join

Pengelompokan

  1. GROUP BY mengumpulkan baris, lalu setiap grup menjadi satu baris
  2. Mengelompokkan dengan dua kunci
  3. Agregat tanpa GROUP BY menghasilkan satu grup
  4. count(*), count(col) dan count(DISTINCT col) menghitung hal yang berbeda
  5. WHERE menyaring baris, HAVING menyaring grup
  6. Mencari duplikat dengan GROUP BY dan HAVING
  7. DISTINCT sama dengan GROUP BY tanpa agregat

Menyusun query

  1. CTE adalah langkah bernama yang berjalan lebih dulu
  2. Subquery yang berdiri sendiri berjalan lebih dulu
  3. EXISTS mengecek setiap baris satu per satu
  4. NOT IN dengan NULL di daftarnya tidak meloloskan baris apa pun
  5. UNION menumpuk dua hasil query
  6. CTE rekursif berjalan per putaran

Window function

  1. Window function melihat baris lain tanpa meringkasnya
  2. LAG membaca nilai dari baris sebelumnya
  3. Membuat peringkat, lalu menyaringnya dengan QUALIFY
  4. Menyimpan satu baris per grup dengan ROW_NUMBER

Debugging

  1. Studi kasus: total pendapatan terlalu besar