b belajar.myudak

SQL dasar — SELECT sampai GROUP BY

Membaca data dengan SELECT, memfilter, mengurutkan, agregasi, dan JOIN. Semua bisa langsung dicoba di SQLite dalam browser.

dasar #SQL#query#join#agregasi

SlideSQL environmentJoin

Latihan UTS & UAS ↓

SQL (Structured Query Language) adalah bahasa standar untuk mengelola basis data relasional. SQL bersifat deklaratif: kamu menulis apa yang diinginkan, dan DBMS menentukan bagaimana cara mengambilnya.

Di bawah ini ada database SQLite sungguhan yang berjalan di browser kamu (lewat WebAssembly). Isinya tiga tabel: mahasiswa, matakuliah, dan krs (mahasiswa mengambil matkul apa, dengan nilai apa). Ubah-ubah saja, tombol Reset database mengembalikan isinya.

SQL playground · SQLite di browser
Memuat SQLite (WebAssembly)…

Anatomi SELECT

SELECT   kolom, fungsi_agregat(...)   -- 5. pilih kolom yang ditampilkan
FROM     tabel                        -- 1. dari tabel mana
JOIN     tabel_lain ON ...            -- 2. gabungkan
WHERE    kondisi_per_baris            -- 3. saring baris
GROUP BY kolom                        -- 4. kelompokkan
HAVING   kondisi_per_kelompok         -- 6. saring kelompok
ORDER BY kolom [ASC|DESC]             -- 7. urutkan
LIMIT    n;                           -- 8. batasi jumlah

Angka di komentar adalah urutan eksekusi logis, berbeda dari urutan penulisan. Itu sebabnya alias dari SELECT biasanya tidak bisa dipakai di WHERE: saat WHERE dijalankan, alias itu belum ada.

JOIN

JOIN menggabungkan baris dari dua tabel berdasarkan kolom yang berelasi (biasanya foreign key ke primary key).

  • INNER JOIN: hanya pasangan yang cocok di kedua tabel.
  • LEFT JOIN: semua baris tabel kiri; kalau tidak ada pasangan di kanan, kolom kanan diisi NULL. Preset “LEFT JOIN” di atas memakai ini untuk menghitung peserta, termasuk matkul yang pesertanya 0.
  • CROSS JOIN: semua kombinasi (cartesian product), ∣A∣×∣B∣|A| \times |B| baris.

Coba sendiri

  1. Tampilkan nama mahasiswa yang pernah mendapat nilai A.
  2. Hitung total SKS yang diambil setiap mahasiswa (petunjuk: JOIN krs dengan matakuliah, lalu SUM(sks) dan GROUP BY).
  3. Tampilkan mahasiswa yang tidak mengambil matkul apa pun (petunjuk: LEFT JOIN ... WHERE k.nim IS NULL).
Cek pemahaman
  1. 1. Klausa mana yang dieksekusi paling awal secara logis?

  2. 2. Query "SELECT angkatan, COUNT(*) FROM mahasiswa WHERE COUNT(*) > 1 GROUP BY angkatan" salah karena…

  3. 3. Tabel A 3 baris, tabel B 4 baris. CROSS JOIN menghasilkan berapa baris?

Latihan UTS & UAS