Kursus interaktif
Kursus SQL
Pelajari SQL dari awal, dalam bahasa Inggris, dengan Postgres asli yang berjalan di browser Anda.
01 · Modul 1 - PILIH Dasar
Dasar-dasarnya: membaca data dari tabel dan memfilternya.
- 1.1Pengantar SQLApa itu SQL, mengapa digunakan, dan seperti apa databasenya.~5 min
- 1.2PILIH… DARIKueri paling sederhana: membaca baris dari tabel.~10 min
- 1.3Memfilter dengan WHEREMemilih hanya baris yang memenuhi suatu kondisi.~10 min
- 1.4Menyortir dengan ORDER BYMengurutkan hasil, menaik atau menurun.~8 min
02 · Modul 2 — SELECT yang lebih kuat
Batasi, hapus duplikat, ganti nama, dan hitung: alat yang Anda gunakan setiap hari.
- 2.1Membatasi dengan LIMITHanya mengembalikan N baris pertama, misalnya untuk membuat papan peringkat.~6 min
- 2.2Nilai unik dengan DISTINCTMenghapus duplikat dari hasil SELECT.~6 min
- 2.3Mengganti nama dengan ASMemberikan nama yang lebih mudah dibaca pada kolom dan ekspresi pada hasilnya.~6 min
- 2.4Menghitung dan meringkas: COUNT, AVG, MAXFungsi agregat: mendapatkan satu nomor dari banyak baris.~8 min
03 · Modul 3 - GABUNG dan KELOMPOK OLEH
Menggabungkan beberapa tabel dan menghasilkan laporan berdasarkan kelompok: inti dari setiap kueri sebenarnya.
- 3.1Menggabungkan dua tabel: INNER JOINMenggabungkan baris dari tabel berbeda mengikuti hubungannya.~12 min
- 3.2Menyimpan semuanya di sebelah kiri: LEFT JOINTermasuk baris yang tidak ada kecocokannya pada tabel lainnya.~10 min
- 3.3Pengelompokan dengan GROUP BYMenghitung agregat per grup, misalnya per departemen.~10 min
- 3.4Kelompok penyaringan: MEMILIKIMempertahankan hanya kelompok yang memenuhi suatu kondisi secara agregat.~8 min
04 · Modul 4 — SQL Praktis
Alat yang membuat perbedaan dalam pekerjaan nyata: daftar, rentang, NULL, dan logika kondisional.
- 4.1Daftar dan rentang: DALAM dan ANTARAFilter ringkas untuk "salah satu dari ini" dan "antara A dan B".~8 min
- 4.2Menangani NULL: IS NULL dan COALESCEMengenali dan menangani nilai-nilai yang hilang tanpa kejutan.~10 min
- 4.3Logika bersyarat: KASUS KAPANMengubah nilai menjadi kategori langsung di SELECT.~10 min
- 4.4Kueri di dalam subkueri lain:Menggunakan hasil SELECT di dalam SELECT lain.~12 min
05 · Modul 5 — GABUNG Tingkat Lanjut
Operasi GABUNG multi-tabel, gabungan mandiri, OUTER, CROSS, dan set: menggabungkan data seperti seorang profesional.
- 5.1GABUNG pada tiga tabel atau lebihMelintasi rantai hubungan: pesanan → pelanggan → produk, dalam satu kueri.~12 min
- 5.2Self-JOIN: meja dengan dirinya sendiriHierarki dan hubungan internal: membaca tabel dengan dua peran (anak dan orang tua).~10 min
- 5.3OUTER JOIN: menemukan "celah"Menggunakan LEFT/RIGHT/FULL OUTER JOIN untuk menemukan baris yang tidak cocok.~10 min
- 5.4UNION, INTERSECT, KECUALI (dan CROSS JOIN)Menggabungkan hasil sebagai himpunan: gabungan, perpotongan, selisih, dan perkalian kartesius.~12 min
06 · Modul 6 — Fungsi bawaan
Transformasi dan manipulasi data dengan fungsi asli PostgreSQL: string, tanggal, angka, konversi tipe.
- 6.1Fungsi stringBAWAH, ATAS, PANJANG, penggabungan, SUBSTRING, TRIM, REPLACE, LIKE dan ILIKE.~12 min
- 6.2Fungsi tanggal dan stempel waktuEKSTRAK, DATE_TRUNC, interval dan perbedaan tanggal.~12 min
- 6.3Fungsi numerikBULAT, CEIL, LANTAI, ABS, MOD dan pembagian bilangan bulat vs desimal.~10 min
- 6.4CAST dan ketik konversiMengonversi antar tipe dengan `::type` dan `CAST(... AS ...)`.~10 min
07 · Modul 7 — Analisis tingkat lanjut
Kueri multi-langkah (CTE), peringkat dan total yang berjalan (fungsi jendela), hierarki tak terbatas (DENGAN REKURSIF).
- 7.1CTE: kueri multi-langkah dengan WITHMemecah kueri kompleks menjadi langkah-langkah bernama agar mudah dibaca dan digunakan kembali.~12 min
- 7.2Fungsi jendela: pemeringkatan dan penghitungan per grupROW_NUMBER, RANK, DENSE_RANK dengan OVER(PARTITION BY …) untuk peringkat dalam grup.~14 min
- 7.3LAG, LEAD dan total berjalanMembandingkan setiap baris dengan baris sebelumnya/berikutnya dan menghitung jumlah kumulatif.~12 min
- 7.4CTE rekursif: hierarki mendalam yang sewenang-wenangDENGAN REKURSIF untuk melintasi hierarki seperti kategori.~14 min
08 · Modul 8 — Menulis dan memodifikasi data
INSERT, UPDATE, DELETE, CREATE TABLE dengan batasan, transaksi: menutup loop dengan penulisan.
- 8.1Memasukkan data: MASUKKANKlausa INSERT, RETURNING tunggal dan multi-baris, yang secara eksplisit memilih kolom.~10 min
- 8.2Memperbarui dan menghapus: UPDATE dan DELETEPerubahan selektif dengan WHERE, dan mengapa WHERE yang terlupakan adalah bencana.~10 min
- 8.3Membuat tabel dan batasan: DDLBUAT TABEL dengan PRIMARY KEY, BUKAN NULL, UNIK, FOREIGN KEY, CHECK dan DEFAULT.~12 min
- 8.4Transaksi: semua atau tidak sama sekaliBEGIN, COMMIT, ROLLBACK: membuat sekelompok operasi menjadi atom.~10 min
09 · Modul 9 — Struktur data dan DDL
Membuat dan mengubah tabel, batasan lanjutan, tipe dan tampilan kompleks.
- 9.1Tipe data tingkat lanjut dan ENUMTipe numerik, tipe TEXT vs VARCHAR, BOOLEAN, UUID, dan ENUM khusus.~10 min
- 9.2Batasan berganda dan tingkat tabelBatasan UNIK dan PRIMARY KEY gabungan, CHECK lanjutan dan kunci asing (ON DELETE CASCADE).~12 min
- 9.3Mengubah struktur: ALTER TABLEMenambah, mengubah dan menghapus kolom atau batasan dari tabel yang ada.~10 min
- 9.4Tampilan dan abstraksi dataMembuat TAMPILAN untuk menyederhanakan kueri kompleks dan TAMPILAN MATERIALISASI untuk kinerja.~12 min
10 · Optimasi dan indeks
Seni membuat kueri dengan cepat: indeks, rencana eksekusi, dan optimalisasi basis data.
- 10.1Indeks dan B-TreesBuat indeks untuk mempercepat kueri pencarian pada tabel besar secara signifikan.~15 min
- 10.2JELASKAN dan ANALISISPelajari cara membaca rencana eksekusi database untuk mendiagnosis kemacetan.~15 min
- 10.3Indeks komposit dan parsialGunakan indeks pada beberapa kolom sekaligus atau hanya pada bagian data tertentu.~12 min
- 10.4Masalah N+1Masalah kinerja ORM yang terkenal dan metode SQL asli untuk mengatasinya dalam satu permintaan.~12 min
11 · Transaksi dan konkurensi
Kelola modifikasi data bersamaan dengan aman: transaksi ACID, kunci, dan tingkat isolasi.
- 11.1Transaksi ACID (BEGIN/COMMIT)Jaga konsistensi data dengan BEGIN, COMMIT, dan ROLLBACK, kelompokkan kueri ke dalam satu blok yang tidak terlihat oleh orang lain.~15 min
- 11.2Kondisi balapanSkenario tepi: apa yang terjadi ketika dua karyawan database paralel bertindak pada keranjang pengguna yang sama.~10 min
- 11.3Mengunci dan PILIH UNTUK UPDATEMengunci baris secara aktif selama pembacaan, memaksa thread lain yang bermutasi menunggu giliran.~15 min
- 11.4Tingkat isolasiDorong hingga batasnya dengan menerapkan Serializable, atau turunkan ke Read Commited untuk kinerja yang tidak aman namun cepat.~12 min
12 · Fungsi dan pemicu
Otomatiskan logika bisnis di dalam database: tulis fungsi yang dapat digunakan kembali dan bereaksi terhadap peristiwa dengan pemicu.
- 12.1UDF dan SQL dasarBuat Fungsi Buatan Pengguna Anda sendiri untuk merangkum penghitungan kompleks dan menggunakannya kembali seperti makro di setiap kueri.~15 min
- 12.2Logika tingkat lanjut dengan PL/pgSQLBerikan kekuatan super pada fungsi Anda: variabel, cabang if-else, dan loop dalam gaya prosedural murni di dalam database.~15 min
- 12.3Pengantar pemicuTentukan fungsi khusus yang dapat langsung memeriksa data OUTGOING (OLD) atau INCOMING (NEW).~15 min
- 12.4Pemicu dan audit praktisKeamanan otomatis: perbarui secara otomatis tanggal "updated_at" dan arsipkan baris yang dihapus secara ajaib untuk kepatuhan.~12 min
13 · Fungsi jendela
Analisis data tingkat lanjut tanpa menciutkan baris: temukan OVER(), PARTITION BY, dan fungsi analitik.
- 13.1Pendahuluan dan klausa OVERJalankan komputasi agregat (seperti SUM atau AVG) sambil mempertahankan masing-masing baris asli.~15 min
- 13.2Pengelompokan dengan PARTISI BYBuat pengelompokan logis (jendela) di dalam data untuk menerapkan fungsi, tanpa menggunakan GROUP BY.~15 min
- 13.3Peringkat: ROW_NUMBER, RANK, dan DENSE_RANKTetapkan nomor baris berurutan dan peringkat ke hasil, dengan menangani ikatan dengan benar.~15 min
- 13.4Pergeseran: LAG dan LEADAkses nilai dari baris sebelumnya atau berikutnya langsung dari baris saat ini untuk menghitung delta dan variasi.~12 min
14 · CTE dan kueri hierarki (DENGAN)
Sederhanakan kueri berukuran besar dengan Common Table Expressions dan navigasikan pohon data tanpa batas dengan CTE rekursif.
- 14.1Pengantar CTE (DENGAN)Ganti subkueri bersarang yang tidak dapat dibaca dengan format prosedural yang bersih dengan mendeklarasikan "tabel virtual" sementara.~12 min
- 14.2CTE ganda dan berantaiKurangi kompleksitas dengan memecah pemrosesan menjadi beberapa langkah berurutan dalam satu pernyataan WITH.~15 min
- 14.3CTE Rekursif: data berbentuk pohonMenavigasi tanpa batas hierarki manajer dan kategori induk-anak dengan memanggil CTE dari dirinya sendiri.~18 min
15 · PostgreSQL JSON dan NoSQL
Manfaatkan kekuatan relasional yang dipadukan dengan dukungan dokumen fleksibel melalui JSON dan JSONB tanpa menggunakan database eksternal.