Tutorial Belajar MySQL Part 16: Tipe Data ENUM dan SET dalam MySQL

Selain tipe data standar seperti Numerik, String dan Date, MySQL juga menyediakan tipe data khusus yang merupakan kumpulan data yang kita definisikan sendiri. Tipe data bentukan ini terdiri dari ENUM dan SET. Dalam tutorial belajar MySQL kali ini kita akan membahas tentang 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:

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:

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.

20 Comments

  1. Fajar Setianto
    11 Apr 15
    • Andre
      12 Apr 15
    • Joe Wilson
      30 Jun 17
      • Andre
        30 Jun 17
  2. adha
    19 Aug 15
    • Andre
      20 Aug 15
  3. Aon
    18 Aug 16
    • Andre
      30 Jun 17
  4. ririn
    14 Jul 17
    • Andre
      15 Jul 17
  5. Lusi
    01 Dec 17
    • Andre
      02 Dec 17
      • Rafi Ihza Mahendra
        24 Feb 22
        • Anonymous
          03 Nov 23
  6. Dhais Firmansyah
    13 May 18
    • Andre
      13 May 18
  7. Khudel
    22 Feb 20
  8. Helius Indrawan
    19 Sep 20
  9. Rafi Ihza Mahendra
    24 Feb 22
    • Anonymous
      23 Jun 23

Add Comment