Panduan Pemula untuk MySQL Cursors

Hai, penggemar basis data yang bersemangat! Hari ini, kita akan memulai perjalanan menarik ke dunia MySQL Cursors. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - saya akan menjadi panduan ramah Anda, dan kita akan mengexplorasi topik ini secara bertahap. Jadi, ambil secangkir minuman kesukaan Anda, dan mari kita masuk ke dalam!

MySQL - Cursor

Apa Itu MySQL Cursors?

Bayangkan Anda di sebuah buffet (ya, saya membuat Anda hunggan saja!). Anda memiliki piring, dan Anda berjalan di sepanjang garis buffet, mengambil 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 himpunan hasil.

Cursor sangat berguna ketika Anda perlu melakukan operasi pada baris individual, bukan pada keseluruhan himpunan hasil sekaligus. Mereka seperti asisten pribadi Anda, mengambil data bagi Anda satu bagian pada satu waktu.

Lifecycle MySQL Cursor

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

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

Sekarang, mari kita eksplorasi setiap langkah ini secara detil.

Mendeklarasikan Cursor

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

Ini adalah cara kita mendeklarasikan cursor:

DECLARE nama_cursor CURSOR FOR SELECT_statement;

mari kita lihat contoh nyata. Anggap kita memiliki tabel bernama 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 kepada cursor, dan pernyataan SELECT menentukan data yang cursor akan mengambil.

Membuka Cursor

Sekarang kita telah mendeklarasikan cursor, itu waktunya untuk membukanya. Ini seperti memilih piring Anda di buffet.

Ini adalah cara kita membuka cursor:

OPEN nama_cursor;

Menggunakan contoh sebelumnya:

OPEN cursor_karyawan;

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

Mengambil Data dari Cursor

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

Ini adalah 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.

Tunggu, masih ada lagi! Biasanya, kita ingin mengambil semua baris, bukan hanya satu. Untuk itu, kita biasanya menggunakan perulangan. Ini adalah 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 menyiapkan perulangan yang terus mengambil baris hingga tidak ada lagi. Itu seperti kembali ke buffet untuk menambahkan lagi (dan lagi, dan lagi...) sampai Anda mencoba semua yang Anda inginkan.

Menutup Cursor

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

Ini adalah cara kita menutup cursor:

CLOSE nama_cursor;

Dan dengan contoh kita:

CLOSE cursor_karyawan;

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

Menyingkat Segala Hal

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_salary 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_salary;
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 melengkapi semua karyawan dan memberikan peningkatan gaji 5% kepada masing-masing. Itu seperti mengambil masing-masing piring dan menambahkan sedikit lagi ke setiap piring!

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
OPEN OPEN nama_cursor; Menjalankan pernyataan SELECT dan menyiapkan untuk mengambil hasil
FETCH FETCH nama_cursor INTO variabel1, variabel2, ...; Mengambil baris berikutnya dari cursor
CLOSE CLOSE nama_cursor; Menutup cursor dan mebebasakan sumber daya terkait

Dan begitu saja, teman-teman! Anda telah mengambil langkah pertama ke dunia MySQL Cursors. Ingat, seperti belajar menavigasi buffet, itu mungkin memerlukan sedikit latihan untuk merasakan nyaman dengan cursor. Tetapi dengan waktu dan kesabaran, Anda akan menjalankan data seperti seorang pro. Selamat coding, dan may your databases always be well-fed and efficient!

Credits: Image by storyset