MySQL Cursors: A Beginner's Guide

Halo, para penggemar basis data yang bersemangat! Hari ini, kita akan memulai perjalanan yang menarik ke dalam dunia MySQL Cursors. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya – saya akan menjadi panduan ramah Anda, dan kita akan mengexploreasi topik ini langkah demi langkah. Jadi, ambil secangkir minuman kesukaan Anda, dan mari kita masuk ke dalamnya!

MySQL - Cursor

Apa Itu MySQL Cursors?

Bayangkan Anda berada di sebuah buffet (ya, saya membuat Anda merasa hungry saja!). Anda memiliki piring, dan Anda berjalan di sepanjang baris buffet, memilih satu item pada satu waktu. Dalam dunia basis data, cursor bekerja sama seperti itu. Itu seperti piring Anda, memungkinkan Anda untuk memproses satu baris pada satu waktu dari sebuah hasil query.

Cursor sangat berguna saat Anda perlu melakukan operasi pada baris individual, bukan pada keseluruhan hasil query sekaligus. Itu seperti asisten pribadi Anda, mengambil data untuk Anda satu bagian pada satu waktu.

Lifecycle MySQL Cursor

Seperti bagaimana kita mengikuti suatu proses di sebuah buffet (ambil piring, isiannya, makan, kembalikan piring), cursor juga memiliki lifecycle. Mari kita pecahkan ini:

  1. Deklarasikan cursor
  2. Buka cursor
  3. Fetch data dari cursor
  4. Tutup cursor

Sekarang, mari kita eksplor setiap langkah ini secara rinci.

Mendeklarasikan Cursor

Pertama-tama, kita perlu memberitahu MySQL bahwa kita ingin menggunakan cursor. Itu seperti mengumumkan kepada staf buffet bahwa Anda siap untuk mulai mengisi piring Anda.

Berikut cara kita mendeklarasikan cursor:

DECLARE nama_cursor CURSOR FOR SELECT_statement;

Mari kita lihat contoh nyata. Anggap kita memiliki tabel yang disebut employees dan kita ingin membuat cursor untuk mengambil semua nama karyawan:

DECLARE cursor_karyawan CURSOR FOR
SELECT first_name, last_name FROM employees;

Dalam contoh ini, cursor_karyawan adalah nama yang kita berikan ke cursor, dan pernyataan SELECT menentukan data yang cursor akan mengambil.

Membuka Cursor

Sekarang kita telah mendeklarasikan cursor, itu waktunya untuk membukanya. Itu seperti benar-benar mengambil piring Anda di buffet.

Berikut cara kita membuka cursor:

OPEN nama_cursor;

Dengan menggunakan contoh sebelumnya:

OPEN cursor_karyawan;

Perintah ini memberitahu MySQL untuk menjalankan pernyataan SELECT yang terkait dengan cursor dan mempersiapkan untuk mengambil hasilnya.

Mengambil Data dari Cursor

Ini adalah tempat magis terjadi! Kita sekarang dapat mulai mengambil data, satu baris pada satu waktu. Itu seperti mengambil item individual di buffet.

Berikut sintaks dasar untuk mengambil data:

FETCH nama_cursor INTO variabel1, variabel2, ...;

Mari kita teruskan dengan contoh karyawan:

DECLARE v_first_name VARCHAR(50);
DECLARE v_last_name VARCHAR(50);

FETCH cursor_karyawan INTO v_first_name, v_last_name;

Dalam kode ini, kita mendeklarasikan dua variabel untuk menyimpan nama depan dan nama belakang, kemudian mengambil baris berikutnya dari cursor ke dalam variabel ini.

Tapi tunggu, ada lagi! Biasanya, kita ingin mengambil semua baris, bukan hanya satu. Untuk itu, kita biasanya menggunakan loop. Mari lihat contoh:

DECLARE v_first_name VARCHAR(50);
DECLARE v_last_name VARCHAR(50);
DECLARE v_selesai INT DEFAULT FALSE;
DECLARE cursor_karyawan CURSOR FOR SELECT first_name, last_name FROM employees;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_selesai = TRUE;

OPEN cursor_karyawan;

read_loop: LOOP
FETCH cursor_karyawan INTO v_first_name, v_last_name;
IF v_selesai THEN
LEAVE read_loop;
END IF;
-- Lakukan sesuatu dengan v_first_name dan v_last_name di sini
END LOOP;

CLOSE cursor_karyawan;

Kode ini membuat loop yang terus mengambil baris sampai tidak ada yang tersisa. Itu seperti kembali ke buffet untuk seconds (dan thirds, dan fourths...) sampai Anda mencoba semua yang Anda inginkan.

Menutup Cursor

Setelah kita selesai dengan cursor, kita perlu menutupnya. Itu seperti mengembalikan piring Anda di buffet.

Berikut cara kita menutup cursor:

CLOSE nama_cursor;

Dan dengan contoh kita:

CLOSE cursor_karyawan;

Ini memberitahu MySQL bahwa kita selesai dengan cursor dan bisa melepaskan sumber daya yang terkait dengannya.

Menyatukan Semua

Sekarang kita telah belajar tentang setiap langkah, mari kita lihat contoh lengkap yang menggunakan cursor untuk memberikan peningkatan gaji kecil kepada semua karyawan:

DELIMITER //

CREATE PROCEDURE berikan_peningkatan_gaji()
BEGIN
DECLARE v_emp_id INT;
DECLARE v_gaji DECIMAL(10,2);
DECLARE v_selesai INT DEFAULT FALSE;
DECLARE cursor_karyawan CURSOR FOR SELECT employee_id, salary FROM employees;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_selesai = TRUE;

OPEN cursor_karyawan;

read_loop: LOOP
FETCH cursor_karyawan INTO v_emp_id, v_gaji;
IF v_selesai THEN
LEAVE read_loop;
END IF;

UPDATE employees SET salary = salary * 1.05 WHERE employee_id = v_emp_id;
END LOOP;

CLOSE cursor_karyawan;
END //

DELIMITER ;

Dalam prosedur ini, kita menggunakan cursor untuk loop melalui semua karyawan dan memberikan peningkatan gaji 5% ke setiap orang. Itu seperti mengambil ke buffet dan menambah sedikit ekstra ke piring setiap orang!

Ringkasan Metode Cursor

Berikut adalah tabel praktis yang menyummarisakan metode cursor yang kita pelajari:

Metode Sintaks Deskripsi
DECLARE DECLARE nama_cursor CURSOR FOR SELECT_statement; Mendefinisikan cursor dan pernyataan SELECT yang terkait dengannya
OPEN OPEN nama_cursor; Menjalankan pernyataan SELECT dan mempersiapkan untuk mengambil hasil
FETCH FETCH nama_cursor INTO variabel1, variabel2, ...; Mengambil baris berikutnya dari cursor
CLOSE CLOSE nama_cursor; Menutup cursor dan melepaskan sumber daya yang terkait

Dan begitu saja, teman-teman! Anda telah mengambil langkah pertama ke dalam dunia MySQL Cursors. Ingat, seperti belajar menavigasi buffet, mungkin perlu beberapa latihan untuk merasakan nyaman dengan cursors. Tetapi dengan waktu dan kesabaran, Anda akan mengolah data seperti seorang pro. Selamat coding, dan semoga basis data Anda selalu sehat dan efisien!

Credits: Image by storyset