MySQL - ENUM: Panduan Kawan untuk Pemula

Hai sana, para ahli basisdata masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia tipe data ENUM MySQL. Jangan khawatir jika Anda baru dalam programming - saya akan panduan ramah Anda, dan kita akan mengexplorekan topik ini langkah demi langkah. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita masuk ke dalam!

MySQL - ENUM

Tipe Data ENUM MySQL

Bayangkan Anda membuat basisdata untuk restoran pizza. Anda ingin menyimpan ukuran pizza, tetapi Anda tahu hanya ada beberapa opsi khusus: kecil, sedang, dan besar. Itu adalah tempat ENUM berguna!

ENUM, singkatan dari "enumeration", adalah cara menarik untuk mengatakan "daftar opsi yang ditentukan sebelumnya." Itu seperti pertanyaan pilihan ganda di mana MySQL hanya mengijinkan jawaban dari pilihan yang Anda berikan.

mari kita buat tabel sederhana untuk menunjukkan:

CREATE TABLE pizza_orders (
id INT AUTO_INCREMENT PRIMARY KEY,
customer_name VARCHAR(50),
size ENUM('small', 'medium', 'large')
);

Dalam contoh ini, size adalah kolom ENUM kami. Itu hanya dapat mengandung salah satu dari tiga nilai yang kita tentukan: 'small', 'medium', atau 'large'.

Attribut ENUM

Sekarang, mari bicarakan tentang beberapa fitur menarik dari ENUM:

  1. Daftar Terurut: Urutan di mana Anda menentukan nilai ENUM penting. MySQL memberikan nomor ke setiap nilai, mulai dari 1.

  2. Case-Insensitive: 'SMALL', 'Small', dan 'small' semua diperlakukan sama.

  3. Efisiensi Penyimpanan: ENUM sangat efisien dalam hal penyimpanan. MySQL menyimpan setiap nilai sebagai nomor (1, 2, 3, dll.) bukan sebagai string penuh.

  4. Nilai Default: Jika Anda tidak menentukan nilai saat memasukkan rekord, MySQL akan menggunakan nilai pertama dalam daftar ENUM sebagai default.

Memasukkan Rekord dengan Nilai ENUM Numerik

Ini adalah一个小秘密: Anda dapat menggunakan nomor untuk memasukkan nilai ENUM! mari kita cobanya:

INSERT INTO pizza_orders (customer_name, size) VALUES
('Alice', 1),
('Bob', 2),
('Charlie', 3);

Dalam kasus ini:

  • 1 mewakili 'small'
  • 2 mewakili 'medium'
  • 3 mewakili 'large'

mari kita periksa hasilnya:

SELECT * FROM pizza_orders;

Anda akan melihat bahwa MySQL telah benar-benar menginterpretasi nomor sebagai nilai ENUM yang sesuai. Sangat keren, kan?

Memasukkan Rekord Tidak Valid

Tapi apa yang terjadi jika kita mencoba untuk menipu dan memasukkan nilai yang tidak valid? mari kita ketahui:

INSERT INTO pizza_orders (customer_name, size) VALUES ('David', 'extra-large');

Ops! MySQL akan memberikan kesalahan kepada kita karena 'extra-large' tidak ada dalam daftar yang kita tentukan. Itu seperti mencoba memilih "D" pada pertanyaan benar/salah - itu hanya tidak bekerja!

Memfilter Rekord berdasarkan Nilai ENUM Numerik

Ingat bahwa saya mengatakan bahwa nilai ENUM disimpan sebagai nomor? Kita dapat menggunakan ini untuk keuntungan kita saat memfilter rekord:

SELECT * FROM pizza_orders WHERE size = 2;

Query ini akan mengembalikan semua pesanan untuk pizza sedang. Itu seperti memiliki kode rahasia - 2 berarti sedang!

Memfilter Rekord berdasarkan Nilai ENUM Bacaan Manusia

Tentu saja, kita juga dapat memfilter menggunakan nilai ENUM yang sebenarnya:

SELECT * FROM pizza_orders WHERE size = 'large';

Query ini akan mengambil semua pesanan untuk pizza besar. Lebih intuitif, kan?

Kerugian Tipe Data ENUM

Sekarang, saya tidak akan menjadi seorang guru yang bagus jika saya tidak memperingatkan Anda tentang beberapa potensi celah:

  1. Kurang Fleksibilitas: Setelah Anda menentukan ENUM, menambahkan atau menghapus nilai memerlukan perubahan struktur tabel. Itu seperti mencoba mengubah aturan di tengah permainan!

  2. Dependensi Basisdata: Jika logika aplikasi Anda tergantung pada nilai ENUM ini, Anda akan memancing aplikasi Anda secara dekat ke struktur basisdata.

  3. Batasan Pengurutan: Nilai ENUM diurutkan berdasarkan nilai numerik internal mereka, yang mungkin tidak selalu adalah apa yang Anda inginkan.

Tipe Data Enum menggunakan Program Klien

Saat bekerja dengan ENUM melalui program klien (seperti skrip PHP atau Python), Anda biasanya akan berinteraksi dengan nilai yang dapat dibaca manusia. Namun, itu baik untuk menyadari representasi numerik yang mendasar.

Ini adalah tabel yang menggabungkan metode ENUM yang kita diskusikan:

Metode Contoh Deskripsi
Membuat ENUM ENUM('small', 'medium', 'large') Menentukan nilai yang diijinkan
Memasukkan dengan String INSERT ... VALUES ('medium') Menggunakan nilai ENUM yang sebenarnya
Memasukkan dengan Nomor INSERT ... VALUES (2) Menggunakan representasi numerik
Memfilter dengan String WHERE size = 'large' Memfilter menggunakan nilai ENUM
Memfilter dengan Nomor WHERE size = 3 Memfilter menggunakan representasi numerik

Ingat, baik Anda menggunakan program klien atau bekerja langsung di MySQL, prinsip ini tetap sama.

Dan begitu saja, teman-teman! Kita telah berpergian melalui negeri MySQL ENUMs. Dari membuatnya hingga memasukkan nilai dan bahkan melihat identitas numerik rahasia mereka, Anda sekarang dilengkapi untuk menggunakan ENUM di petualangan basisdata Anda.

Hanya ingat, seperti memilih topping untuk pizza, ENUM sangat bagus ketika Anda memiliki set opsi tetap. Tetapi jika Anda terus ingin menambahkan rasa baru, mungkin saatnya Anda mempertimbangkan pendekatan lain.

Terus latih, tetap curioso, dan selamat coding! Siapa tahu, mungkin kali berikutnya Anda memesan pizza, Anda akan berpikir tentang struktur basisdata. (Atau mungkin itu hanya saya? ?)

Credits: Image by storyset