Operasi CRUD MySQL
Create, Read, Update, Delete - Operasi fundamental database
1. Create (INSERT)
Seperti yang telah dipelajari di modul sebelumnya, INSERT digunakan untuk menambahkan data baru.
-- Menyisipkan satu baris
INSERT INTO siswa (nama, kelas) VALUES ('Rudi', '11 IPS');
-- Menyisipkan beberapa baris sekaligus
INSERT INTO siswa (nama, kelas) VALUES
('Eva', '10 IPA'),
('Fajar', '12 IPS'),
('Gita', '11 IPA');
INSERT dengan SELECT
Menyalin data dari tabel lain:
INSERT INTO siswa_baru (nama, kelas)
SELECT nama, kelas FROM siswa WHERE kelas = '10 IPA';
2. Read (SELECT)
SELECT digunakan untuk membaca data dari tabel.
SELECT dengan Klausa WHERE Lanjutan
-- Operator AND/OR
SELECT * FROM siswa
WHERE kelas = '10 IPA' AND tanggal_lahir > '2005-01-01';
-- Operator LIKE dengan wildcard
SELECT * FROM siswa
WHERE nama LIKE 'A%'; -- Nama dimulai dengan 'A'
SELECT * FROM siswa
WHERE nama LIKE '%a%'; -- Nama mengandung huruf 'a'
-- Operator IN
SELECT * FROM siswa
WHERE kelas IN ('10 IPA', '11 IPA');
-- Operator BETWEEN
SELECT * FROM siswa
WHERE tanggal_lahir BETWEEN '2004-01-01' AND '2005-12-31';
Fungsi Agregat
-- COUNT: Menghitung jumlah baris
SELECT COUNT(*) FROM siswa;
SELECT COUNT(*) FROM siswa WHERE kelas = '10 IPA';
-- SUM: Menjumlahkan nilai
SELECT SUM(nilai) FROM ujian;
-- AVG: Rata-rata
SELECT AVG(nilai) FROM ujian;
-- MAX/MIN: Nilai tertinggi/terendah
SELECT MAX(nilai), MIN(nilai) FROM ujian;
-- GROUP BY: Pengelompokan
SELECT kelas, COUNT(*) FROM siswa GROUP BY kelas;
-- HAVING: Filter hasil GROUP BY
SELECT kelas, COUNT(*) FROM siswa
GROUP BY kelas HAVING COUNT(*) > 5;
DISTINCT untuk Nilai Unik
SELECT DISTINCT kelas FROM siswa;
3. Update (UPDATE)
UPDATE digunakan untuk memodifikasi data yang sudah ada.
-- Sintaks dasar
UPDATE nama_tabel
SET kolom1 = nilai1, kolom2 = nilai2, ...
WHERE kondisi;
-- Contoh
UPDATE siswa
SET kelas = '12 IPA', alamat = 'Jl. Sudirman No. 5'
WHERE id = 3;
-- Update multiple
UPDATE siswa
SET kelas = '12 IPA'
WHERE kelas = '11 IPA' AND tanggal_lahir < '2004-06-01';
Peringatan: Selalu gunakan WHERE dalam perintah UPDATE, jika tidak semua data dalam tabel akan diupdate!
4. Delete (DELETE)
DELETE digunakan untuk menghapus data dari tabel.
-- Sintaks dasar
DELETE FROM nama_tabel WHERE kondisi;
-- Contoh
DELETE FROM siswa WHERE id = 5;
-- Hapus berdasarkan kondisi
DELETE FROM siswa WHERE kelas = '10 IPS' AND nama LIKE 'Test%';
Peringatan: Seperti UPDATE, selalu gunakan WHERE dalam DELETE. Tanpa WHERE, semua data dalam tabel akan terhapus!
TRUNCATE vs DELETE
Perbedaan antara TRUNCATE dan DELETE:
| DELETE | TRUNCATE | |
|---|---|---|
| Syntax | DELETE FROM table WHERE condition | TRUNCATE TABLE table |
| Kondisi WHERE | Bisa menggunakan WHERE | Tidak bisa menggunakan WHERE |
| Kecepatan | Lebih lambat | Lebih cepat |
| Auto-increment | Tidak reset counter | Reset counter |
| Trigger | Memicu trigger DELETE | Tidak memicu trigger |
Studi Kasus: Manajemen Data Siswa
Mari praktikkan operasi CRUD dengan contoh manajemen data siswa:
1. Buat Tabel
CREATE TABLE siswa (
id INT AUTO_INCREMENT PRIMARY KEY,
nis VARCHAR(20) UNIQUE NOT NULL,
nama VARCHAR(100) NOT NULL,
jenis_kelamin ENUM('L', 'P'),
kelas VARCHAR(10),
tanggal_lahir DATE,
alamat TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. Insert Data Awal
INSERT INTO siswa (nis, nama, jenis_kelamin, kelas, tanggal_lahir, alamat) VALUES
('2023001', 'Andi Wijaya', 'L', '10 IPA', '2005-05-15', 'Jl. Merdeka No. 10'),
('2023002', 'Budi Santoso', 'L', '10 IPS', '2005-08-20', 'Jl. Sudirman No. 5'),
('2023003', 'Citra Dewi', 'P', '11 IPA', '2004-11-10', 'Jl. Gatot Subroto No. 15');
3. Update Data
-- Perbaiki alamat Andi
UPDATE siswa
SET alamat = 'Jl. Merdeka No. 10A'
WHERE nis = '2023001';
-- Naikkan kelas semua siswa
UPDATE siswa
SET kelas = REPLACE(kelas, '10', '11')
WHERE kelas LIKE '10%';
4. Query Data
-- Cari siswa perempuan
SELECT * FROM siswa WHERE jenis_kelamin = 'P';
-- Hitung siswa per kelas
SELECT kelas, COUNT(*) as jumlah
FROM siswa
GROUP BY kelas
ORDER BY jumlah DESC;
-- Cari siswa yang lahir setelah 2005
SELECT nama, kelas, tanggal_lahir
FROM siswa
WHERE tanggal_lahir > '2005-01-01';
5. Delete Data
-- Hapus siswa dengan NIS tertentu
DELETE FROM siswa WHERE nis = '2023002';
-- Hapus semua siswa kelas 10 (sebelum update)
DELETE FROM siswa WHERE kelas LIKE '10%';