Ciertas veces estamos diseñando una base de datos para MySQL y al crear los campos de las tablas, nos preguntamos: “¿Cuál es la mejor opción para este caso?”. A continuación os expongo algunos de los límites que caben en cada tipo de campo.
Campos de carácter
Para almacenar hasta 255 caracteres, puede usar el tipo “VARCHAR”. Por ejemplo, para crear un campo de texto de 50 caracteres máximo se escribiría: VARCHAR(50)
Campos de Texto
MySQL tiene 4 tipos de campos de texto (TINYTEXT, TEXT, MEDIUMTEXT y LONGTEXT). Los campos de texto de tipo “TEXT” son afectados por la codifiacción de texto. Aquí están las longitudes máximas que permiten almacenar.
TINYTEXT | 255 caracteres | 256 b |
---|---|---|
TEXT | 65,535 caracteres | ~64kb |
MEDIUMTEXT | 16,777,215 caracteres | ~16Mb |
LONGTEXT | 4,294,967,295 caracteres | ~4Gb |
También se puede usar los campos de tipo “BLOB”, que son binarios y no son afectados por la codificación de caracteres. Este tipo de campos también se puede usar para guardar imágenes y datos binarios en general. Son los siguientes:
TINYBLOB | 256 bytes | |
---|---|---|
BLOB | 65,535 bytes | ~64kb |
MEDIUMBLOB | 16,777,215 bytes | ~16Mb |
LONGBLOB | 4,294,967,295 bytes | ~4Gb |
Campos Numéricos
MySQL tiene 5 tipos de campos numéricos (TINYINT, SMALLINT, MEDIUMINT, INT y BIGINT). Los campos numéricos pueden ser positivos y negativos cuando son del tipo “signed” y solo positivos cuando son del tipo “unsigned“. Si son “unsigned“, el valor máximo puede ser el doble que cuando son “signed“.
Tipo | Bytes | Valor mínimo (Signed / Unsigned) |
Valor máximo (Signed / Unsigned) |
---|---|---|---|
TINYINT | 1 | -128 / 0 | 127 / 255 |
SMALLINT | 2 | -32768 / 0 | 32767 / 65535 |
MEDIUMINT | 3 | -8388608 / 0 | 8388607 / 16777215 |
INT | 4 | -2147483648 / 0 | 2147483647 / 4294967295 |
BIGINT | 8 | -9223372036854775808 / 0 | 9223372036854775807 / 18446744073709551615 |
También están lo tipos numéricos con coma flotante. Estos son: FLOAT (de 4 bytes), DOUBLE (de 8 bytes) y REAL, que tiene la misma precisión que DOUBLE.