6 messages in com.mysql.lists.mysql-esRe: enum() y set()
FromSent OnAttachments
Segis-Eresmas22 Jan 2004 08:50 
Marcelo Rodriguez Salinas22 Jan 2004 08:56 
Jose Miguel Pérez22 Jan 2004 09:26 
Jose Miguel Pérez22 Jan 2004 09:45 
Segis-Eresmas22 Jan 2004 09:48 
Jose Miguel Pérez22 Jan 2004 10:18 
Subject:Re: enum() y set()
From:Jose Miguel Pérez (jru@lmental.com)
Date:01/22/2004 09:45:37 AM
List:com.mysql.lists.mysql-es

Hola Marcelo:

enum(), es un campo destinado a armar un lista de datos ordenada de acuerdo a tus necesidades o al orden que tu le quieras dar, por cierto que siempre [...] set(), es una lista de elementos ordenados

Meeeeeeeeeeec... La respuesta no es correcta. ;-)

(Lo siento Marcelo, es broma).

Lo más correcto sería decir que ENUM es una "enumeración" de valores. Estos valores siempre serán representados internamente (a nivel físico) como un entero (Además de 16 bits, de ahí la restricción de máximo 65535 valores). De todas formas, a nosotros programadores de alto nivel nos la trae floja la representación interna de las cosas, así que hay un campo SQL entero que adopta la forma de ENUM para hacernos la vida más fácil. Ejemplo:

ENUM('uno', 'dos', 'tres',... )

Estamos dandole "nombre" a los números:

SELECT ... WHERE mi_enum = "uno"

Esto es básicamente igual que:

SELECT ... WHERE mi_enum = 1 (Internamente "mi_enum" es un entero, NO ES CHAR)

En el caso de los SETs, es básicamente un conjunto. De tal forma que al definir:

SET('uno', 'dos', 'tres', ... )

Estamos diciendo que esta columna almacena un conjunto de estos valores, no un valor único. Por ejemplo:

mi_conjunto = "tres,dos,uno" mi_conjunto = "dos,tres"

Saludos. Jose Miguel.