MySQL - Referensi Statement

Selamat datang, para ahli basis data masa depan! Hari ini, kita akan mendalami dunia magis statement MySQL. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - pada akhir tutorial ini, Anda akan bisa memanggil mantra basis data seperti seorang pro!

MySQL - Statements Reference

Statement Definisi Data

Ayo mulai dengan blok bangunan kerajaan basis data kita: Statement Definisi Data. Ini adalah perintah yang kita gunakan untuk membuat, mengubah, dan menghapus struktur basis data kita.

CREATE TABLE

Bayangkan Anda sedang membangun perpustakaan. Hal pertama yang Anda butuhkan adalah rak buku, kan? Dalam MySQL, "rak buku" kita adalah tabel. Ayo buat satu!

CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
author VARCHAR(50),
publication_year INT
);

Statement ini membuat tabel "books" dengan empat kolom:

  • id: Identifikasi unik untuk setiap buku
  • title: Judul buku (sampai 100 karakter)
  • author: Penulis buku (sampai 50 karakter)
  • publication_year: Tahun buku diterbitkan

ALTER TABLE

Ups! Kita lupa menambahkan kolom untuk genre buku. Tidak perlu khawatir, kita dapat mengubah tabel kita:

ALTER TABLE books
ADD COLUMN genre VARCHAR(30);

Ini menambahkan kolom baru bernama "genre" ke tabel "books".

DROP TABLE

Jika kita memutuskan bahwa kita tidak lagi memerlukan tabel kita (mungkin kita beralih ke e-book?), kita dapat menghapusnya:

DROP TABLE books;

Berhati-hati dengan ini, though! Itu seperti membakar rak bukunya - Anda tidak bisa kembali!

Statement Manipulasi Data

Sekarang kita memiliki struktur, ayo isikan datanya!

INSERT

Waktu menambahkan beberapa buku ke perpustakaan kita:

INSERT INTO books (title, author, publication_year, genre)
VALUES ('The Great Gatsby', 'F. Scott Fitzgerald', 1925, 'Classic');

Ini menambahkan satu buku ke tabel kita. Anda dapat menambahkan banyak buku sekaligus:

INSERT INTO books (title, author, publication_year, genre)
VALUES
('To Kill a Mockingbird', 'Harper Lee', 1960, 'Fiction'),
('1984', 'George Orwell', 1949, 'Science Fiction');

SELECT

Sekarang, mari kita lihat buku-buku yang kita punya:

SELECT * FROM books;

Ini mengambil semua kolom (*) dari tabel "books". Anda dapat lebih spesifik:

SELECT title, author FROM books WHERE publication_year < 1950;

Ini mengambil hanya judul dan penulis buku yang diterbitkan sebelum 1950.

UPDATE

Ups, kita membuat kesalahan! "1984" sebenarnya adalah fiksi distopia:

UPDATE books
SET genre = 'Dystopian Fiction'
WHERE title = '1984';

Ini mengubah genre untuk buku berjudul "1984".

DELETE

mari kita hapus semua buku yang diterbitkan sebelum 1930:

DELETE FROM books
WHERE publication_year < 1930;

Berhati-hati dengan DELETE - seperti DROP, itu permanen!

Statement Transaksi dan Penguncian

kadang-kadang, kita perlu memastikan bahwa serangkaian operasi terjadi bersamaan, atau sama sekali tidak. Itu di mana transaksi masuk.

START TRANSACTION

START TRANSACTION;
INSERT INTO books (title, author, publication_year, genre)
VALUES ('Pride and Prejudice', 'Jane Austen', 1813, 'Romance');
UPDATE books SET publication_year = 1960 WHERE title = 'To Kill a Mockingbird';
COMMIT;

Ini memastikan bahwa INSERT dan UPDATE terjadi bersamaan. Jika ada kesalahan, tidak satupun akan berpengaruh.

ROLLBACK

Jika kita mengubah pikiran saat transaksi:

START TRANSACTION;
DELETE FROM books WHERE publication_year < 1900;
-- Ups, kita tidak bermaksud untuk melakukan itu!
ROLLBACK;

ROLLBACK membatalkan semua perubahan yang dibuat sejak START TRANSACTION.

Statement Prepared

Statement prepared adalah seperti resep - Anda mensetnya sekali, lalu gunakan lebih dari sekali dengan bahan-bahan yang berbeda.

PREPARE stmt FROM 'SELECT * FROM books WHERE author = ?';
SET @a = 'George Orwell';
EXECUTE stmt USING @a;

Ini mensiapkan statement untuk menemukan buku berdasarkan penulis tertentu, lalu menjalankannya untuk George Orwell.

Statement Komponen

Statement komponen memungkinkan kita untuk mengelompokkan beberapa statement bersamaan. Mereka sering digunakan dalam prosedur dan fungsi penyimpanan.

DELIMITER //
CREATE PROCEDURE CountBooks()
BEGIN
DECLARE bookCount INT;
SELECT COUNT(*) INTO bookCount FROM books;
SELECT CONCAT('There are ', bookCount, ' books in the library.') AS Message;
END //
DELIMITER ;

CALL CountBooks();

Ini membuat prosedur yang menghitung buku dan menampilkan pesan.

Variabel dalam Program Penyimpanan

Variabel dalam program penyimpanan adalah seperti kotak kecil tempat kita menyimpan informasi secara sementara.

DELIMITER //
CREATE PROCEDURE OldestBook()
BEGIN
DECLARE oldestYear INT;
DECLARE oldestTitle VARCHAR(100);

SELECT MIN(publication_year), title
INTO oldestYear, oldestTitle
FROM books;

SELECT CONCAT('The oldest book is ', oldestTitle, ' published in ', oldestYear) AS Message;
END //
DELIMITER ;

CALL OldestBook();

Prosedur ini menemukan buku tertua dan memberitahukan tentangnya.

Statement Kontrol Aliran MySQL

Statement kontrol aliran membantu kita membuat keputusan dalam kode.

DELIMITER //
CREATE PROCEDURE CategoryByYear(IN pub_year INT)
BEGIN
DECLARE category VARCHAR(20);
IF pub_year < 1900 THEN
SET category = 'Very Old';
ELSEIF pub_year < 2000 THEN
SET category = 'Classic';
ELSE
SET category = 'Modern';
END IF;
SELECT category AS 'Book Category';
END //
DELIMITER ;

CALL CategoryByYear(1925);

Ini mengklasifikasikan buku berdasarkan tahun penerbitannya.

Statement Cursor MySQL

Cursor memungkinkan kita untuk iterasi melalui set hasil satu baris pada satu waktu.

DELIMITER //
CREATE PROCEDURE ListBooks()
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE book_title VARCHAR(100);
DECLARE cur CURSOR FOR SELECT title FROM books;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

OPEN cur;

read_loop: LOOP
FETCH cur INTO book_title;
IF done THEN
LEAVE read_loop;
END IF;
SELECT book_title;
END LOOP;

CLOSE cur;
END //
DELIMITER ;

CALL ListBooks();

Prosedur ini mencantumkan semua judul buku satu per satu.

Statement Penanganan Kondisi MySQL

Handler kondisi memungkinkan kita untuk menangani kesalahan dan peringatan dengan mulus.

DELIMITER //
CREATE PROCEDURE SafeInsert(IN book_title VARCHAR(100), IN book_author VARCHAR(50))
BEGIN
DECLARE EXIT HANDLER FOR 1062
BEGIN
SELECT 'Error: Duplicate entry' AS Message;
END;

INSERT INTO books (title, author) VALUES (book_title, book_author);
SELECT 'Book added successfully' AS Message;
END //
DELIMITER ;

CALL SafeInsert('The Great Gatsby', 'F. Scott Fitzgerald');

Prosedur ini secara aman menambahkan buku, menangani kasus di mana buku mungkin sudah ada.

Dan begitu saja! Anda telah mengambil langkah pertama ke dunia statement MySQL. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba perintah ini. Sebelum Anda tahu, Anda akan mengelola basis data seperti seorang ahli!

Credits: Image by storyset