sql >> Base de Datos >  >> RDS >> Mysql

MySQL:¿Por qué especificar el ancho de visualización sin usar zerofill?

Este ancho de visualización de "característica" adicional es bastante confuso, porque en otros tipos de columnas como CHAR es especifica la longitud.

Aquí hay un breve desglose:

  • Lo más importante:no especificando el "espacio de almacenamiento" o "número de dígitos". Solo indica cómo se formatean los datos de esta columna. antes de que sea devuelto. INT(5) puede almacenar el mismo valores como INT (16) o INT (255):los tres pueden almacenar todos (y solo) los valores que son válidos para INT. INT(255) no puede almacenar un número con 255 dígitos. El espacio de almacenamiento para todos ellos es el espacio que ocupa un INT.
  • Si usa ZEROFILL en una columna con ancho de visualización, y la representación de cadena del número almacenado es más corta que el ancho de visualización, se rellenará con ceros a la izquierda. Si es más largo, no pasa nada. Si elige INT(5) y el valor es 13, se devolverá como 00013. Si el valor es 123456, se devolverá como 123456.
  • Si no usa ZEROFILL , no habrá relleno en absoluto (sin espacios y demás)
  • Si usa ZEROFILL , debe tener en cuenta que la columna también será UNSIGNED
  • En cualquier caso, el ancho de visualización se devuelve cuando se consultan los metadatos de la tabla. Entonces, una aplicación podría saber cómo se deben formatear los datos.

No me gusta el ancho de visualización, porque la capa de almacenamiento "conoce" la presentación visual de los datos almacenados. Aparte de esto, no tiene ningún uso que yo sepa.