Almacenamiento de caracteres en Mysql

En Mysql, los caracteres se almacenan en los campos de tipo CHAR y VARCHAR.

CHAR

  • Tiene una longitud fija (máxima), entre 0 y 255, desde el momento en que se agrega a la tabla.
  • Cuando se guarda un valor, se agregan espacios al final hasta completar la longitud.
  • Cuando se obtiene el valor, los espacios al final se quitan (excepto que esté activado el modo sql PAD_CHAR_TO_FULL_LENGTH)
  • Los espacios finales en exceso en valores insertados son truncados silenciosamente.

VARCHAR

  • Tiene una longitud variable siendo la máxima, entre 0 y 65536.
  • Los valores se almacenan con un prefijo de 1 byte si la longitud es hasta 255 bytes y de 2 bytes si es mayor, además de los datos.
  • Los valores no se completan con espacios cuando se guardan.
  • Los espacios al final se guardan y se obtienen siempre.
  • Los espacios finales que exceden la longitud máxima se truncan antes de la inserción y generan un warning.

En ambos tipos

  • Si no está activado el modo estricto, al asignar un valor a un campo CHAR o VARCHAR que excede su longitud máxima, se trunca y genera un warning. Caso contrario, se genera un error y se anula la consulta.
  • Los valores se ordenan y comparan de acuerdo al collation asociado al campo.
  • Los valores se comparan omitiendo los espacios finales, a excepción de cuando se usa el operador LIKE, para el cual importan los espacios al final.
  • Si un campo tiene un índice que requiere valores únicos, al insertar valores que solamente difieran en los espacios al final se generará un error de duplicate key.
Tagged with: , , ,
Publicado en Aplicaciones