¿Cuál es el tamaño de la columna de int (11) en mysql en bytes?

¿Cuál es el tamaño de la columna de int(11) en mysql en bytes?

¿Y el valor máximo que se puede almacenar en estas columnas?

Un INT siempre tendrá 4 bytes, independientemente de la longitud especificada.

  • TINYINT = 1 byte (8 bit)
  • SMALLINT = 2 bytes (16 bit)
  • MEDIUMINT = 3 bytes (24 bit)
  • INT = 4 bytes (32 bit)
  • BIGINT = 8 bytes (64 bit).

La longitud solo especifica cuántos caracteres mostrar cuando se seleccionan datos con el cliente de línea de comandos mysql.

… y el valor máximo será 2147483647 (Firmado) o 4294967295 (Sin firmar)

INT ( somenumber ) hará la diferencia solo en el término de visualización , es decir, se mostrará en el número en ‘ somenumber ‘ dígitos, y no restringido solo a 11. Usted empareja usando ZEROFILL , que antepondrá los ceros hasta que coincida con su longitud

Tenga en cuenta que el valor almacenado en la base de datos no se ve afectado, cualquier cálculo seguirá comportándose como es.

Observaciones:

  • si el valor tiene menos dígitos que ‘ somenumber ‘, ZEROFILL precederá a ceros.

    INT (5) ZEROFILL con el valor almacenado de 32 mostrará 00032
    INT (5) con el valor almacenado de 32 mostrará 32
    INT con el valor almacenado de 32 mostrará 32

  • si el valor tiene más dígitos que ‘ somenumber ‘, se mostrará el valor almacenado.

    INT (3) ZEROFILL con el valor almacenado de 250000 mostrará 250000
    INT (3) con el valor almacenado de 250000 mostrará 250000
    INT con el valor almacenado de 250000 mostrará 250000

Lo similar también se aplica a BIGINT, MEDIUMINT, SMALLINT y TINYINT.

Según aquí , int(11) tomará 4 bytes de espacio que son 32 bits de espacio con 2^(31) = 2147483648 valor máximo y -2147483648 valor mínimo. Un bit es por señal.

Como han dicho otros, los valores mínimos / máximos que la columna puede almacenar y cuánto espacio de almacenamiento ocupa en bytes solo está definido por el tipo, no por la longitud.

Muchas de estas respuestas dicen que la parte (11) solo afecta el ancho de la pantalla, lo que no es exactamente cierto, pero principalmente.

Una definición de int(2) sin zerofill especificada :

  • todavía acepta un valor de 100
  • todavía muestra un valor de 100 cuando sale (no 0 o 00 )
  • el ancho de la pantalla será el ancho del valor más grande que se emite desde la consulta de selección.

Lo único que (2) hará es si también se especifica zerofill :

  • se mostrará un valor de 1 01 .
  • Al mostrar valores, la columna siempre tendrá un ancho del máximo valor posible que la columna podría tomar, que es de 10 dígitos para un entero, en lugar del ancho mínimo requerido para mostrar el valor más grande que esa columna necesita mostrar en esa consulta de selección específica , que podría ser mucho más pequeño.
  • La columna aún puede tomar y mostrar un valor que excede la longitud, pero estos valores no tendrán el prefijo 0s.

La mejor manera de ver todos los matices es ejecutar:

 CREATE TABLE `mytable` ( `id` int(11) NOT NULL AUTO_INCREMENT, `int1` int(10) NOT NULL, `int2` int(3) NOT NULL, `zerofill1` int(10) ZEROFILL NOT NULL, `zerofill2` int(3) ZEROFILL NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `mytable` (`int1`, `int2`, `zerofill1`, `zerofill2`) VALUES (10000, 10000, 10000, 10000), (100, 100, 100, 100); select * from mytable; 

que dará salida:

 +----+-------+-------+------------+-----------+ | id | int1 | int2 | zerofill1 | zerofill2 | +----+-------+-------+------------+-----------+ | 1 | 10000 | 10000 | 0000010000 | 10000 | | 2 | 100 | 100 | 0000000100 | 100 | +----+-------+-------+------------+-----------+ 

Observe cómo la columna int1 tiene un ancho de visualización mucho más pequeño que zerofill2 aunque la longitud es mayor.

Esta respuesta se prueba contra MySQL 5.7.12 para Linux y puede o no variar para otras implementaciones.

¿Cuál es el tamaño de la columna de int (11) en mysql en bytes?

(11) : este atributo del tipo de datos int no tiene nada que ver con el tamaño de la columna. Solo muestra el ancho del tipo de datos entero. Desde 11.1.4.5. Atributos de tipo numérico :

MySQL admite una extensión para especificar opcionalmente el ancho de visualización de los tipos de datos enteros entre paréntesis después de la palabra clave básica para el tipo. Por ejemplo, INT (4) especifica una INT con un ancho de visualización de cuatro dígitos.

Una buena explicación para esto se puede encontrar aquí

Para resumir: el número en el corchete en int (N) a menudo se confunde con el tamaño máximo permitido para la columna, como lo hace en el caso de varchar (N).

Pero este no es el caso con los tipos de datos Integer: el número N en el paréntesis no es el tamaño máximo de la columna, sino simplemente un parámetro para decirle a MySQL en qué ancho mostrar la columna cuando los datos de la tabla se visualizan a través de MySQL consola (cuando está usando el atributo ZEROFILL).

El número entre paréntesis le indicará a MySQL cuántos ceros debe rellenar con los enteros entrantes. Por ejemplo: si está usando ZEROFILL en una columna que está configurada en INT (5) y se inserta el número 78, MySQL rellenará ese valor con ceros hasta que el número satisfaga el número entre paréntesis. es decir, 78 se convertirá en 00078 y 127 se convertirá en 00127. Para resumir: el número entre paréntesis se utiliza para fines de visualización.
En cierto modo, el número entre paréntesis es inútil a menos que esté usando el atributo ZEROFILL.

Entonces el tamaño para int permanecería igual, es decir, -2147483648 a 2147483648 para firmado y 0 a 4294967295 para sin firmar (~ 2.15 billones y 4.2 billones, una de las razones por las cuales los desarrolladores siguen sin conocer la historia detrás del Número N entre paréntesis, ya que apenas afecta la base de datos a menos que contenga más de 2 billones de filas), y en términos de bytes sería de 4 bytes .

Para obtener más información sobre el tamaño / rango de tipos enteros, consulte el Manual de MySQL

Aunque es poco probable que se vea esta respuesta, creo que vale la pena hacer la siguiente aclaración:

  • el (n) detrás de un tipo de datos entero en MySQL especifica el ancho de la pantalla
  • el ancho de visualización NO limita la longitud del número devuelto por una consulta
  • el ancho de visualización DOES limita el número de ceros llenados para una columna llena de cero por lo que el número total coincide con el ancho de visualización (siempre que el número real no exceda el ancho de visualización, en cuyo caso el número se muestra como está)
  • el ancho de la pantalla también se entiende como una herramienta útil para que los desarrolladores sepan qué longitud debe rellenar el valor para

UN POCO DE DETALLE
el ancho de la pantalla aparentemente pretende proporcionar algunos metadatos sobre cuántos ceros mostrar en un número lleno cero.
En realidad, NO limita la longitud de un número devuelto por una consulta si ese número supera el ancho de visualización especificado.
Para saber qué longitud / ancho está permitido para un tipo de datos entero en MySQL, consulte la lista y enlace: ( tipos: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT );
Habiendo dicho lo anterior, puede esperar que el ancho de visualización no afecte a los resultados de una consulta estándar, a menos que las columnas se especifiquen como columnas ZEROFILL
O
en el caso de que los datos se tomen en una aplicación y esa aplicación esté recostackndo el ancho de la pantalla para usar para otro tipo de relleno.

Referencia principal: https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean

En MySQL entero int(11) tiene un tamaño de 4 bytes que equivale a 32 bits.

El valor firmado es: – 2^(32-1) to 0 to 2^(32-1)-1 = -2147483648 to 0 to 2147483647

Los valores sin signo son: 0 to 2^32-1 = 0 to 4294967295

int(11) significa en MySQL que la columna int puede almacenar el valor entero máximo con 11 dígitos de longitud. Sin embargo, eso no es verdad. en int (11), 11 es el display width de display width de la columna de enteros, a diferencia de las columnas de caracteres donde el número significa el número de caracteres que se pueden almacenar. haga clic aquí para leer más

Creo que el valor máximo de int (11) es 4294967295

4294967295 es la respuesta, porque int (11) muestra un máximo de 11 dígitos IMO