que longitud example mysql integer

longitud - ¿Cuál es la diferencia entre tinyint, smallint, mediumint, bigint e int en MySQL?



tinyint que es (6)

Cuando se llega al uso en el mundo real de estos tipos de datos, es muy importante que entienda que el uso de ciertos tipos de enteros podría ser una exageración o un uso insuficiente. Por ejemplo, usar el tipo de datos entero para employeeCount en una tabla dice que employee podría ser una exageración ya que admite un rango de valores enteros de ~ negativo 2 billones a positivo 2 billones o cero a aproximadamente 4 billones (sin signo). Por lo tanto, incluso si considera que uno de los empleadores más grandes de EE. UU., Como Walmart, con aproximadamente 2,2 millones de empleados que utilizan un tipo de dato entero para la columna employeeCount, sería innecesario. En tal caso, utiliza mediumint (que admite de 0 a 16 millones (sin firmar)), por ejemplo. Habiendo dicho que si se espera que su rango sea inusualmente grande, podría considerar bigint, que como puede ver en las notas de Daniel, es compatible con un rango más grande que el que quiero descifrar.

¿Cuál es la diferencia entre tinyint, smallint, mediumint, bigint e int en MySQL?

¿En qué casos se deben utilizar?


El tamaño de almacenamiento requerido y el tamaño de los números.

en SQL Server

tinyint 1 byte, 0 a 255

smallint 2 bytes, -2 ^ 15 (-32,768) a 2 ^ 15-1 (32,767)

int 4 bytes, -2 ^ 31 (-2,147,483,648) a 2 ^ 31-1 (2,147,483,647)

bigint 8 bytes, -2 ^ 63 (-9,223,372,036,854,775,808) a 2 ^ 63-1 (9,223,372,036,854,775,807)

puede almacenar el número 1 en los 4, pero un bigint usará 8 bytes mientras que el tinyint usará 1 byte


Esos parecen ser tipos de datos MySQL.

Según la MySQL que lleven:

  1. tinyint = 1 byte
  2. smallint = 2 bytes
  3. mediumint = 3 bytes
  4. int = 4 bytes
  5. bigint = 8 bytes

Y, naturalmente, acepta rangos de números cada vez más grandes.


La diferencia es la cantidad de memoria asignada a cada número entero y el número que pueden almacenar.


Ocupan diferentes cantidades de espacio y tienen diferentes rangos de valores aceptables.

Aquí están los tamaños y rangos de valores para SQL Server , otros RDBMS tienen documentación similar:

Resulta que todos usan la misma especificación (con algunas excepciones menores que se mencionan a continuación) pero admiten varias combinaciones de esos tipos (Oracle no se incluye porque tiene solo un tipo de datos NUMBER , consulte el enlace anterior):

| SQL Server MySQL Postgres DB2 --------------------------------------------------- tinyint | X X smallint | X X X X mediumint | X int/integer | X X X X bigint | X X X X

Y admiten los mismos rangos de valores (con una excepción a continuación) y todos tienen los mismos requisitos de almacenamiento:

| Bytes Range (signed) Range (unsigned) -------------------------------------------------------------------------------------------- tinyint | 1 byte -128 to 127 0 to 255 smallint | 2 bytes -32768 to 32767 0 to 65535 mediumint | 3 bytes -8388608 to 8388607 0 to 16777215 int/integer | 4 bytes -2147483648 to 2147483647 0 to 4294967295 bigint | 8 bytes -9223372036854775808 to 9223372036854775807 0 to 18446744073709551615

Los tipos "sin firmar" solo están disponibles en MySQL, y el resto solo usa los rangos firmados, con una excepción notable: tinyint en SQL Server no tiene firma y tiene un rango de valores de 0 a 255


Tipo de datos Almacenamiento de rango

bigint -2^63 (-9,223,372,036,854,775,808) to 2^63-1 (9,223,372,036,854,775,807) 8 Bytes int -2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647) 4 Bytes smallint -2^15 (-32,768) to 2^15-1 (32,767) 2 Bytes tinyint 0 to 255 1 Byte

Ejemplo

El siguiente ejemplo crea una tabla con los tipos de datos bigint, int, smallint y tinyint. Los valores se insertan en cada columna y se devuelven en la instrucción SELECT.

CREATE TABLE dbo.MyTable ( MyBigIntColumn bigint ,MyIntColumn int ,MySmallIntColumn smallint ,MyTinyIntColumn tinyint ); GO INSERT INTO dbo.MyTable VALUES (9223372036854775807, 214483647,32767,255); GO SELECT MyBigIntColumn, MyIntColumn, MySmallIntColumn, MyTinyIntColumn FROM dbo.MyTable;