57 - Tipo de dato enum. |
Una empresa necesita personal, varias personas se han presentado para cubrir distintos cargos.
La empresa almacena los datos de los postulantes a los puestos en una tabla llamada "postulantes". Le interesa, entre otras cosas, conocer los estudios que tiene cada persona, si tiene estudios primario, secundario, terciario, universitario o ninguno. Para ello, crea un campo de tipo "enum" con esos valores.
Eliminamos la tabla "postulantes", si existe.
Creamos la siguiente tabla definiendo un campo de tipo "enum":
create table postulantes( numero int unsigned auto_increment, documento char(8), nombre varchar(30), sexo char(1), estudios enum('ninguno','primario','secundario', 'terciario','universitario') not null, primary key(numero) );
Ingresamos algunos registros:
insert into postulantes (documento,nombre,sexo,estudios) values('22333444','Ana Acosta','f','primario'); insert into postulantes (documento,nombre,sexo,estudios) values('22433444','Mariana Mercado','m','universitario');
Ingresamos un registro sin especificar valor para "estudios", guardará el valor por defecto:
insert into postulantes (documento,nombre,sexo) values('24333444','Luis Lopez','m');
Vemos el registro ingresado:
select * from postulantes;
En el campo "estudios" se guardó el valor por defecto, el primer valor de la lista enumerada.
Si ingresamos 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,sexo,estudios) values('2455566','Juana Pereyra','f',5);
En el campo "estudios" almacenará "universitario" que es valor de índice 5.
Si ingresamos un valor no presente en la lista, coloca una cadena vacía. Por ejemplo:
insert into postulantes (documento,nombre,sexo,estudios) values('24678907','Pedro Perez','m','Post Grado');
Si ingresamos un valor de índice fuera de rango, almacena una cadena vacía:
insert into postulantes (documento,nombre,sexo,estudios) values('22222333','Susana Pereyra','f',6); insert into postulantes (documento,nombre,sexo,estudios) values('25676567','Marisa Molina','f',0);
La cadena vacía ingresada como resultado de ingresar un valor incorrecto 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;
Queremos seleccionar los postulantes con estudios universitarios:
select * from postulantes where estudios='universitario';
Como el campo está definido como "not null", si intentamos almacenar el valor "null" aparece un mensaje de error y la sentencia no se ejecuta.
insert into postulantes (documento,nombre,sexo,estudios) values('25676567','Marisa Molina','f',null);