Las enumeraciones en Mysql es un tipo de dato divertido que funciona sobre todo cuando los datos relacionados son fijos y nunca cambian.
Primero que nada, que es un Enum o Enumeración?
Las enumeraciones son tipos de datos similares o iguales a los Arrays en los lenguajes de programación, es decir, se asocian palabras con un indice numérico que inicia de 0 hasta el numero de elementos -1. Ejemplo.
En el caso de MySQL los indices empiezan desde 1.
Enumeración: Marcas de autos
Indice | Nombre |
1 | Ford |
2 | Ferrari |
3 | Chevrolette |
4 | Lamborghini |
Teniendo nuestra enumeración, podemos acceder a cualquiera de los valores usando el indice.
Enumeraciones en MySQL
Las enumeraciones en MySQL se definen en la creación de la tabla, para las inserciones y actualizaciones de los campos tipo enum vamos a usar el indice de la enumeración.
create table car(
id int not null auto_increment primary key,
modelo varchar(255),
marca enum("Ford", "Ferrari","Chevrolette","Lamborghini")
);
En la linea 4 podemos ver que definimos el tipo enum, que contiene 4 elementos: Ford, ferrari, chevrolette, lamborghini.
La cantidad de elementos que se pueden agregar en un Enum es de 65535 elementos.
Insertar valores
Como ya decía anteriormente, para agregar valores en el enum nos vamos a referir al indice y al mostrar los valores en automático se ingresa el valor en texto.
insert into car(modelo, marca) value("f-150",1);
Al mostrar los resultados veríamos algo asi.
MariaDB [sysshortener]> select * from car;
+----+--------+-------+
| id | modelo | marca |
+----+--------+-------+
| 1 | f-150 | Ford |
+----+--------+-------+
1 row in set (0.000 sec)
Automáticamente al insertar el valor 1 en la marca se toma el valor en texto que tenia la Enumeración de valores.
Lo mismo para actualizar algún valor siempre utilizaremos el indice del enum.
update car set marca=2;
Y se actualizan los datos.
MariaDB [sysshortener]> select * from car;
+----+--------+---------+
| id | modelo | marca |
+----+--------+---------+
| 1 | f-150 | Ferrari |
+----+--------+---------+
1 row in set (0.000 sec)
Y listo, ahora ya pueden usar enums en su próximo proyecto. Alguna duda?
Excelente trabajo y explicación.
Gracias.