MySQL: Tipo de dato ENUM
Hoy he descubierto que MySQL tiene un tipo de dato que es un ENUM
. Este permite definir hasta 2^16 ó 65536 valores diferentes. La peculiaridad es que puedes definir un conjunto de valores como "estado" => "pending", "wip", "done", y estos el propio MySQL los convierte en valores 1, 2, 3... Importante: los valores empiezan en 1 y no 0. Destacar que puede tener tanto un valor DEFAULT
como puede ser NULLABLE
y en este caso, si no está definido, el valor del campo será NULL
.
Para utilizarlo podemos crear una tabla de ejemplo:
CREATE TABLE tasks
id int unsigned auto_increment,
status enum('pending','wip', 'done'),
primary key(id)
);
Y podemos insertar, leer y seleccionar datos tanto filtrando por los valores de tipo string:
INSERT INTO tasks(status) VALUES ('pending');
INSERT INTO tasks(status) VALUES ('wip');
INSERT INTO tasks(status) VALUES ('done');
SELECT * FROM tasks WHERE status = "pending";
SELECT * FROM tasks WHERE status = 1;
También funcionaría utilizando los valores numéricos, aunque en este caso creo que pierde la magia.
Si te ha resultado útil este artículo agradecería si te suscribes a mi newsletter. Recibirás contenido exclusivo de calidad y también me ayudarás enormemente. Cada suscripción apoya el trabajo que realizo y me permite conocer mejor los temas que te interesan, de forma que puedo mejorar los conocimientos que comparto contigo.