Sintaxis Enum
Para definir un campo de tipo "enum" usamos la siguiente sintaxis al crear la tabla:
create table postulantes( numero int unsigned auto_increment, documento char(8), nombre varchar(30), estudios enum('ninguno','primario','secundario', 'terciario','universitario'), primary key(numero) );
Los valores presentados deben ser cadenas de caracteres.
Si un "enum" permite valores nulos, el valor por defecto es "null"; si no permite valores nulos, el valor por defecto es el primer valor de la lista de permitidos.
Si se ingresa un valor numérico, lo interpreta como índice de la enumeración y almacena el valor de la lista con dicho número de índice. Por ejemplo:
insert into postulantes (documento,nombre,estudios) values('22255265','Juana Pereyra',5);
En el campo "estudios" almacenará "universitario" que es valor de índice 5.
Si se ingresa un valor inválido, puede ser un valor no presente en la lista o un valor de índice fuera de rango, coloca una cadena vacía (en las versiones nuevas de MySQL produce un error y no se inserta). Por ejemplo:
insert into postulantes (documento,nombre,estudios) values('22255265','Juana Pereyra',0); insert into postulantes (documento,nombre,estudios) values('22255265','Juana Pereyra',6); insert into postulantes (documento,nombre,estudios) values('22255265','Juana Pereyra','PostGrado');
Esta cadena vacía de error, se diferencia de una cadena vacía permitida porque la primera tiene el valor de índice 0; entonces, podemos seleccionar los registros con valores inválidos en el campo de tipo "enum" así:
select * from postulantes where estudios=0;
El índice de un valor "null" es "null".
Para seleccionar registros con un valor específico de un campo enumerado usamos "where", por ejemplo, queremos todos los postulantes con estudios universitarios:
select * from postulantes where estudios='universitario';
Los tipos "enum" aceptan cláusula "default".
Si el campo está definido como "not null" e intenta almacenar el valor "null" aparece un mensaje de error y la sentencia no se ejecuta.
Los bytes de almacenamiento del tipo "enum" depende del número de valores enumerados.