tamaño float mysql types int

float - tinyint mysql



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

¿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?


¿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. Es solo mostrar el ancho del tipo de datos entero. A partir del 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 siguiendo la palabra clave base para el tipo. Por ejemplo, INT (4) especifica una INT con un ancho de visualización de cuatro dígitos.


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


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 enteros en MySQL está especificando el ancho de visualización
  • el ancho de visualización NO limita la longitud del número devuelto por una consulta
  • el ancho de visualización SÍ limita el número de ceros llenados para una columna con cero rellenos, de modo que el número total coincida 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 considera una herramienta útil para que los desarrolladores sepan a qué longitud se debe rellenar el valor.

UN POCO DE DETALLE
el ancho de la pantalla está, aparentemente, destinado a proporcionar algunos metadatos sobre cuántos ceros se mostrarán en un número con cero.
NO limita realmente 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 se permite realmente para un tipo de datos entero en MySQL vea la lista y enlace: ( tipos: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT );
Por lo tanto, una vez dicho lo anterior, puede esperar que el ancho de visualización no afecte 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 estén incorporando a una aplicación y esa aplicación esté recopilando el ancho de la pantalla para usarla con otro tipo de relleno.

Referencia principal: here


Como han dicho otros, los valores mínimos / máximos que la columna puede almacenar y la cantidad de almacenamiento que toma en bytes solo está definida por el tipo, no por la longitud.

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

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

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

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

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

La mejor manera de ver todos los matices es correr:

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 menor 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.


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


En MySQL, el 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 firmar son: 0 to 2^32-1 = 0 to 4294967295


INT ( somenumber ) hará la diferencia solo en el término de visualización , es decir, se mostrará en el número en los dígitos del " somenumber ", y no se restringirá solo a 11. Se empareja con 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 todavía se comportará como es.

Observaciones:

  • Si el valor tiene menos dígitos que '' somenumber '', ZEROFILL prepondrá 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 mismo se aplica a BIGINT, MEDIUMINT, SMALLINT y TINYINT también.


Según here , 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 para firmar.


Un INT siempre será de 4 bytes sin importar la longitud especificada.

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

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

... y el valor máximo será 2147483647 (firmado) o 4294967295 (sin firmar)


Una buena explicación para esto se puede encontrar here

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

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

El número entre paréntesis le dirá a MySQL cuántos ceros para rellenar los enteros entrantes. Por ejemplo: si está utilizando ZEROFILL en una columna que está establecida 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 un poco inútil a menos que esté utilizando el atributo ZEROFILL.

Por lo tanto, el tamaño para int seguirá siendo el mismo, es decir, -2147483648 a 2147483648 para firmado y de 0 a 4294967295 para no firmado (~ 2.15 billones y 4.2 billones, una de las razones por las cuales los desarrolladores siguen sin saber la historia detrás del Número N entre paréntesis, ya que apenas afecta a 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 los tipos de enteros, consulte el Manual de MySQL


según este book :

MySQL le permite especificar un "ancho" para los tipos de enteros, como INT (11). Esto no tiene sentido para la mayoría de las aplicaciones: no restringe el rango legal de valores, sino que simplemente especifica el número de caracteres que las herramientas interactivas de MySQL reservarán para fines de visualización. Para fines de almacenamiento y computación, INT (1) es idéntico a INT (20).


int(11) significa que en MySQL es 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 entero, 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