Manipulasi Data dengan SQL

Gambar Materi

1. Penggunaan WHERE, ORDER BY, GROUP BY, dan HAVING

A. WHERE (Memfilter Data)
WHERE digunakan untuk memfilter data berdasarkan kondisi tertentu.

Sintaks Dasar:
SELECT kolom1, kolom2 FROM nama_tabel WHERE kondisi;
Contoh:
SELECT * FROM Mahasiswa WHERE Prodi = 'Informatika';
👉 Menampilkan mahasiswa yang berada di Prodi Informatika.

B. ORDER BY (Mengurutkan Data)

ORDER BY digunakan untuk mengurutkan hasil query berdasarkan kolom tertentu.

Sintaks Dasar:
SELECT kolom1, kolom2 FROM nama_tabel ORDER BY kolom1 ASC|DESC;
Contoh:
SELECT * FROM Mahasiswa ORDER BY Nama ASC;
👉 Mengurutkan mahasiswa berdasarkan nama secara ascending (A-Z).

C. GROUP BY (Mengelompokkan Data)
GROUP BY digunakan untuk mengelompokkan data berdasarkan kolom tertentu dan sering digunakan bersama fungsi agregat seperti COUNT(), SUM(), AVG(), dll.

Sintaks Dasar:
SELECT kolom, AGGREGATE_FUNCTION(kolom) FROM nama_tabel GROUP BY kolom;
Contoh:
SELECT Prodi, COUNT(*) AS jumlah_mahasiswa FROM Mahasiswa GROUP BY Prodi;
👉 Menghitung jumlah mahasiswa berdasarkan prodi.

D. HAVING (Memfilter Data setelah GROUP BY)
HAVING digunakan untuk memfilter hasil setelah GROUP BY, karena WHERE tidak bisa digunakan untuk fungsi agregat.

Sintaks Dasar:
SELECT kolom, AGGREGATE_FUNCTION(kolom) FROM nama_tabel GROUP BY kolom HAVING kondisi;
Contoh:
SELECT Prodi, COUNT(*) AS jumlah_mahasiswa FROM Mahasiswa GROUP BY Prodi HAVING COUNT(*) > 10;
👉 Menampilkan hanya program studi yang memiliki lebih dari 10 mahasiswa.

2. Penggabungan Tabel dengan JOIN (INNER, LEFT, RIGHT, FULL)
JOIN digunakan untuk mengambil data dari dua tabel atau lebih yang memiliki hubungan melalui foreign key.

A. INNER JOIN
INNER JOIN hanya mengambil data yang memiliki kecocokan di kedua tabel.

Contoh:
SELECT Mahasiswa.Nama, MataKuliah.Nama AS MataKuliah
FROM Mahasiswa
INNER JOIN KRS ON Mahasiswa.ID = KRS.ID_Mahasiswa
INNER JOIN MataKuliah ON KRS.ID_MataKuliah = MataKuliah.ID;

👉 Mengambil nama mahasiswa dan mata kuliah yang diambil oleh mahasiswa tersebut.

B. LEFT JOIN
LEFT JOIN mengambil semua data dari tabel kiri dan hanya data yang cocok dari tabel kanan.

Contoh:
SELECT Mahasiswa.Nama, KRS.ID_MataKuliah
FROM Mahasiswa
LEFT JOIN KRS ON Mahasiswa.ID = KRS.ID_Mahasiswa;
👉 Menampilkan semua mahasiswa, termasuk yang belum mengambil mata kuliah.

C. RIGHT JOIN
RIGHT JOIN mengambil semua data dari tabel kanan dan hanya data yang cocok dari tabel kiri.
Contoh:
SELECT Mahasiswa.Nama, MataKuliah.Nama
FROM Mahasiswa
RIGHT JOIN KRS ON Mahasiswa.ID = KRS.ID_Mahasiswa
RIGHT JOIN MataKuliah ON KRS.ID_MataKuliah = MataKuliah.ID;
👉 Menampilkan semua mata kuliah, termasuk yang belum memiliki mahasiswa yang mendaftar.

D. FULL JOIN
FULL JOIN mengambil semua data dari kedua tabel, baik yang cocok maupun tidak.

Catatan: FULL JOIN tidak didukung oleh MySQL, tetapi bisa digantikan dengan UNION antara LEFT JOIN dan RIGHT JOIN.

Contoh:
SELECT Mahasiswa.Nama, MataKuliah.Nama
FROM Mahasiswa
LEFT JOIN KRS ON Mahasiswa.ID = KRS.ID_Mahasiswa
LEFT JOIN MataKuliah ON KRS.ID_MataKuliah = MataKuliah.ID
UNION
SELECT Mahasiswa.Nama, MataKuliah.Nama
FROM Mahasiswa
RIGHT JOIN KRS ON Mahasiswa.ID = KRS.ID_Mahasiswa
RIGHT JOIN MataKuliah ON KRS.ID_MataKuliah = MataKuliah.ID;
👉 Menggabungkan hasil dari LEFT JOIN dan RIGHT JOIN agar semua data dari kedua tabel muncul.

3. Subquery dan Nested Query
Subquery adalah query yang berada dalam query lain.

A. Subquery dalam SELECT
Digunakan untuk mendapatkan nilai dari query lain.
Contoh:
SELECT Nama, (SELECT COUNT(*) FROM KRS WHERE KRS.ID_Mahasiswa = Mahasiswa.ID) AS Jumlah_MataKuliah
FROM Mahasiswa;

B. Subquery dalam WHERE
Digunakan untuk memfilter data berdasarkan hasil query lain.

Contoh:
SELECT Nama FROM Mahasiswa WHERE ID IN (SELECT ID_Mahasiswa FROM KRS WHERE ID_MataKuliah = 1);
👉 Menampilkan mahasiswa yang mengambil mata kuliah dengan ID = 1

C. Subquery dalam FROM
Digunakan untuk membuat tabel sementara dalam query utama.

Contoh:
SELECT AVG(Jumlah_MataKuliah) FROM
(SELECT ID_Mahasiswa, COUNT(*) AS Jumlah_MataKuliah FROM KRS GROUP BY ID_Mahasiswa) AS Subquery;
👉 Menghitung rata-rata jumlah mata kuliah yang diambil oleh mahasiswa.

-KESIMPULAN-
WHERE, ORDER BY, GROUP BY, dan HAVING digunakan untuk memfilter dan mengelompokkan data.
JOIN digunakan untuk menggabungkan data dari beberapa tabel berdasarkan relasi antar tabel.
Subquery digunakan untuk menjalankan query dalam query lain untuk mendapatkan hasil yang lebih kompleks.

Gambar Materi

Kembali ke Daftar Materi