MySQL - Panduan Statemen

Selamat datang, ahli basis data masa depan! Hari ini, kita akan melihat dunia yang magical dari statemen MySQL. Jangan khawatir jika Anda belum pernah menulis satu baris kode sebelumnya - pada akhir panduan ini, Anda akan bisa menciptakan mantra basis data seperti seorang ahli!

MySQL - Statements Reference

Statemen Definisi Data

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

CREATE TABLE

Imaginasikan Anda sedang membangun sebuah perpustakaan. Hal pertama yang Anda butuhkan adalah rak buku, kan? Di MySQL, "rak buku" kita adalah tabel. Mari kita buat satu!

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

Statemen ini... saya maksudkan, pernyataan ini, menciptakan sebuah tabel bernama "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. Tak perlu khawatir, kita bisa 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 kita tidak lagi memerlukan tabel kita (mungkin kita beralih ke buku elektronik?), kita bisa menghapusnya:

DROP TABLE books;

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

Statemen Manipulasi Data

Sekarang kita memiliki struktur, mari kita isinya dengan data!

INSERT

Waktunya 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 bisa menambahkan banyak buku dalam satu kali:

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 bisa 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 buku yang berjudul "1984".

DELETE

Misalnya kita ingin menghapus semua buku yang diterbitkan sebelum 1930:

DELETE FROM books
WHERE publication_year < 1930;

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

Statemen Transaksi dan Penguncian

kadang-kadang, kita perlu memastikan bahwa sebuah rangkaian 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 melakukan itu!
ROLLBACK;

ROLLBACK membatalkan semua perubahan yang dibuat sejak START TRANSACTION.

Statemen Yang Diperparah

Statemen yang diperparah adalah seperti resep - Anda mensetnya sekali, kemudian gunakanlah berkali-kali dengan bahan yang berbeda.

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

Ini mempersiapkan statemen untuk menemukan buku berdasarkan penulis tertentu, kemudian menjalankannya untuk George Orwell.

Statemen Komposit

Statemen komposit memungkinkan kita untuk mengelompokkan beberapa statemen bersamaan. Mereka sering digunakan dalam prosedur dan fungsi.

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 menciptakan sebuah prosedur yang menghitung jumlah buku dan menampilkan pesan.

Variabel dalam Program Tersimpan

Variabel dalam program tersimpan 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 memberitakan tentangnya.

Statemen Kontrol Alir MySQL

Statemen kontrol alir 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 mengategorikan buku berdasarkan tahun penerbitannya.

Statemen Cursor MySQL

Cursor memungkinkan kita untuk mengulang melalui setiap baris hasilnya satu per satu.

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.

Statemen Penanganan Kondisi MySQL

Penanganan kondisi memungkinkan kita untuk menangani kesalahan dan peringatan dengan mudah.

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 itu adalah! Anda baru saja mengambil langkah pertama Anda ke dunia statemen MySQL. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba perintah ini. Sebelum Anda tahu, Anda akan mengelola basis data seperti seorang ahli!

Credits: Image by storyset