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%';

Kuis Singkat

1. Apa yang terjadi jika menjalankan: UPDATE siswa SET kelas = '12 IPA'; tanpa WHERE?



2. Manakah yang lebih cepat untuk menghapus semua data dari tabel?



3. Fungsi agregat apa yang digunakan untuk menghitung rata-rata?