YouTube Twitter

NO TE PIERDADAS DE NADA SIGUE A NEURONAGEEK

Actualmente en MySQL existen dos tipos de campo que solemos ver iguales y no encontramos diferencia alguna en este post veremos cuales son sus diferencias.

 

 

mysql logo

Tanto ENUM como SET, sirven para determinar los valores que puede tener un campo de una tabla, es decir, puedes determinar que en un campo solamente pueda contener valores de una lista definida por ti. La principal diferencia es que un campo del tipo ENUM siempre contiene sólo un valor de la lista; y un campo del tipo SET puede contener ninguno, uno o varios valores de la lista.

 

La principal diferencia esta en que un campo de tipo ENUM solo puede contener un sólo valor de la lista, en cambio el campo de tipo SETpuede contener uno, varios o ningúno de los valores de la lista. Pero hay más diferencias aun, así que vamos a verlas.

 

El campo ENUM se caracteriza por:

 

1
2
3
CREATE TABLE colores (
	color ENUM('azul', 'blanco', 'rojo') NOT NULL DEFAULT 'rojo';
);

 

  • Sólo contiene un valores.
  • Se puede definir la lista de hasta 65535 valores distintos.
  • Si se permite NULL, este será el valor por defecto; sinó, y si no se define con DEFAULT, será el primer valor de la lista (en el ejemplo de arriba, si no defino el DEFAULT ‘azul’, por defecto sería ‘azul’).
  • Cada valor de la lista es numerado con un índice (empieza desde el 1), pudiendo usar el índice en vez del valor de la lista (en el ejemplo de arriba: 1=>’azul’, 2=>’blanco’ y 3=>’rojo’).
  • En caso de introducir un valor no perteciente a la lista, el campo pasará a valer ”, una cadena vacía, que tiene el índice zero
  • El índice de NULL es NULL,
  • Para retornar el índice de un campo del tipo ENUM, podemos sumar zero al campo (SELECT size+0 FROM …)
  • De almacenamiento físico, ocupará 1 byte si hay 255 o menos valores en la lista, o 2 bytes si hay 256 o más valores.

 

El campo SET se caracteriza por:
 

1
2
3
CREATE TABLE colores (
	color SET('azul', 'blanco', 'rojo', 'amarillo');
);

 

  • Contiene zero, uno o varios valores.
  • Se puede definir la lista de hasta 64 valores distintos.
  • Los valores no pueden contener comas, ya que los valores asignados son separados por comas.
  • Cada valor de la lista representa un bit de la cadena de bits del campo.
  • El valor decimal del campo determina los bits, marcando los valores que contiene el campo,de manera que si todos los bits estan a 1, es que ese campo contiene todos los valores (ejemplo: si el valor decimal es 7, en binario sería 0111, y eso quiere decir que el campo contiene los valore ‘a’, ‘b’ y ‘c’).

     

    SETDECIMALBYTES
    'A'10001
    'B'20010
    'C'40100
    'D'81000

     

  • De almacenamiento físico, ocupará 1, 2, 3, 4, o 8 bytes, según la longitud de la lista de valores (si N es el número de valores, la formula es (N+7)/8 bytes).

 

Ahora sabemos las diferencias más importantes tales como que ENUM soporta más elementos que SET yque SET no soporta el uso de ‘,’(Commas) entre sus elementos.

 


 

Conociendo más a fondo los tipos de campos, y sabiendo sus posibilidades, ahora es fácil decidirse y justicarse.

 

Te gustó? compartelo!

Avatar de César Méndez

César Méndez

Soy un desarrollador de sistemas, fanático de la Ingeniería de Datos, curioso y explorador. CEO de www.servidoresactivos.com | www.gampinspira.com | www .neuronageek.com

Deja un comentario

404 Not Found
Please forward this error screen to www.sweetcaptcha.com's WebMaster.

The server can not find the requested page:

  • www.sweetcaptcha.com/api.php (port 80)

    Publicidad

    Patrocinadores

    Siguenos en facebook

    Siguenos en Twitter