Query Dasar MySQL
7. Tipe Data ENUM dan SET
Tutorial Belajar MySQL Part 16: Tipe Data ENUM dan SET dalam MySQL
Pengertian Tipe data ENUM dalam MySQL
Tipe data ENUM merupakan tipe data yang khusus untuk kolom dimana nilai datanya sudah kita tentukan sebelumnya. Pilihan ini dapat berisi 1 sampai dengan 65,535 pilihan string. Dimana kolom yang didefinisikan sebagai ENUM hanya dapat memilih satu diantara pilihan string yang tersedia.
Contoh penggunaan ENUM misalnya untuk kolom yang berisi daftar Jurusan yang harus dipilih mahasiswa. Pilihan ini harus sudah tersedia sebelumnya, dan kita dapat menggunakan tipe data enum untuk memastikan bahwa jurusan yang dipilih adalah jurusan yang telah ditentukan sebelumnya dan hanya 1 jurusan.
Contoh query tipe data ENUM:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | mysql> CREATE TABLE jurusan (jur ENUM( 'Ilmu Komputer' , 'Ekonomi' , 'MIPA' , 'Kedokteran' )); Query OK, 0 rows affected (0.07 sec) mysql> DESCRIBE jurusan; + -------+-----------------------------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | + -------+-----------------------------------------------------+------+-----+---------+-------+ | jur | enum( 'Ilmu Komputer' , 'Ekonomi' , 'MIPA' , 'Kedokteran' ) | YES | | NULL | | + -------+-----------------------------------------------------+------+-----+---------+-------+ 1 row in set (0.01 sec) mysql> INSERT INTO jurusan VALUES ( 'Ilmu Komputer' ); Query OK, 1 row affected (0.04 sec) mysql> INSERT INTO jurusan VALUES ( 'Kedokteran' ); Query OK, 1 row affected (0.04 sec) mysql> INSERT INTO jurusan VALUES ( 'FISIP' ); ERROR 1265 (01000): Data truncated for column 'jur' at row 1 mysql> INSERT INTO jurusan VALUES ( 'Ilmu Komunikasi' ); ERROR 1265 (01000): Data truncated for column 'jur' at row 1 mysql> SELECT * FROM jurusan; + ---------------+ | jur | + ---------------+ | Ilmu Komputer | | Kedokteran | + ---------------+ 2 rows in set (0.00 sec) |
Pada query diatas, kita mendefinisikan kolom jur pada tabel Jurusan dengan tipe ENUM yang dapat dipilih dari pilihan yang tersedia : Ilmu Komputer,Ekonomi,MIPA, dan Kedokteran. Ketika kita mencoba menginput data baru, seperti Fisip dan Ilmu Komunikasi, MySQL mengeluarkan error, karena pilihan ini memang tidak kita definisikan sebelumnya.
Pengertian Tipe data SET dalam MySQL
Berbeda dengan tipe data ENUM dimana pilihan yang tersedia untuk kolom hanya dapat 1 data, untuk kolom SET kita dapat memilih satu atau lebih nilai yang tersedia dari 1 sampai 64 pilihan string yang tersedia.
Contoh penggunaan tipe data SET adalah untuk data tentang hobby seseorang, karena bisa aja seseorang memiliki hobi yang lebih dari 1, namun kita ingin memilih dari kumpulan list yang telah kita buat sebelumnya.
Contoh query tipe data SET:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | mysql> CREATE TABLE hobi (hob SET( 'Membaca' , 'Menulis' , 'Menggambar' , 'Main Musik' )); Query OK, 0 rows affected ( 0.05 sec) mysql> DESCRIBE hobi; +-------+----------------------------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------------------------------------------------+------+-----+---------+-------+ | hob | set ( 'Membaca' , 'Menulis' , 'Menggambar' , 'Main Musik' ) | YES | | NULL | | +-------+----------------------------------------------------+------+-----+---------+-------+ 1 row in set ( 0.01 sec) mysql> INSERT INTO hobi VALUES ( 'Membaca' ); Query OK, 1 row affected ( 0.05 sec) mysql> INSERT INTO hobi VALUES ( 'Membaca,Main Musik' ); Query OK, 1 row affected ( 0.07 sec) mysql> INSERT INTO hobi VALUES ( 'Menggambar,Main Musik' ); Query OK, 1 row affected ( 0.04 sec) mysql> INSERT INTO hobi VALUES ( 'Belajar,Main Musik' ); ERROR 1265 ( 01000 ): Data truncated for column 'hob' at row 1 mysql> SELECT * FROM hobi; +-----------------------+ | hob | +-----------------------+ | Membaca | | Membaca,Main Musik | | Menggambar,Main Musik | +-----------------------+ 3 rows in set ( 0.00 sec) |
Dari query diatas, dapat kita lihat bahwa untuk menginput lebih dari 1 nilai, kita memisahkan dengan tanda koma dan tetap dalam tanda kutip, juga seandainya kita coba input hobi ‘belajar’, yang memang tidak ada sebelumnya, maka MySQL akan mengeluarkan pesan error.
Tipe data enum dan set adalah tipe data khusus dalam MySQL dan digunakan untuk menyeleksi input ke database agar sesuai dengan data yang tersedia. Dalam tutorial Belajar MySQL selanjutnya kita akan membahas tentang atribut tipe data yang digunakan untuk memberi sifat dan fitur tambahan kedalam sebuah kolom di dalam MySQL.