Está en la página 1de 5

Tipos de datos en MySQL

Introducción
Elegir correctamente el tipo de dato para cada columna de una tabla hará que nuestra base de datos
tenga un rendimiento óptimo a mediano y largo plazo.

A continuación, se listan los tres grandes grupos que se utilizan para almacenar datos. Así como también
los tipos que comúnmente se utilizan para representar cada tipo.

1. Numérico
● Int
● Float
2. Cadenas de caracteres (String)
● Varchar
● Text
3. Fecha
● Date
● DateTime

Tipos de datos
Listado de cada uno de los tipos de datos, su ocupación en disco y valores.

Numéricos
Enteros
Minimum
Storage Minimum Value Value Maximum Value Maximum Value
Type (Bytes) Signed Unsigned Signed Unsigned
TINYINT 1 -128 0 127 255
SMALLINT 2 -32,768 0 32,767 65,535
MEDIUMINT 3 -8,388,608 0 8,388,607 16,777,215
INT 4 -2,147,483,648 0 2,147,483,647 4,294,967,295
BIGINT 8 -263 0 263-1 264-1
Reales
DECIMAL (NUMERIC)
Los tipos DECIMAL y NUMERIC almacenan valores de datos numéricos exactos. Estos tipos se utilizan
cuando es importante preservar la precisión exacta, por ejemplo, con datos monetarios. En MySQL,
NUMERIC se implementa como DECIMAL, por lo que las siguientes observaciones sobre DECIMAL se
aplican por igual a NUMERIC.

El número máximo de dígitos para DECIMAL es 65, pero el rango real para una columna DECIMAL
determinada puede estar restringido por la precisión o escala de una columna determinada. Cuando a
dicha columna se le asigna un valor con más dígitos después del punto decimal que los permitidos por la
escala especificada, el valor se convierte a esa escala. (El comportamiento preciso es específico del
sistema operativo, pero generalmente el efecto es el truncamiento al número permitido de dígitos).

Ejemplo:
salary DECIMAL(5,2)

Float, Double
Los tipos FLOAT y DOUBLE representan valores aproximados de datos numéricos. MySQL usa cuatro
bytes para valores de precisión simple y ocho bytes para valores de precisión doble. Los números de
punto flotante tienen una precisión limitada. Aunque depende del sistema operativo.

Debido a que los valores de coma flotante son aproximados y no se almacenan como valores exactos,
los intentos de tratarlos como exactos en las comparaciones pueden generar problemas. También están
sujetos a dependencias de plataforma o implementación.

BIT (BOOL, BOOLEAN):


Número entero con valor 0 o 1.

String
CHAR
Ocupación fija cuya longitud comprende de 1 a 255 caracteres.

VARCHAR:
Ocupación variable cuya longitud comprende de 1 a 255 caracteres.

La longitud máxima permitida era de 255 caracteres hasta MySQL 5.0.3. pero desde esta versión cambio
a un máximo de 65.535 caracteres.

BLOB
Los BLOB (Binary Large Objects, objetos binarios grandes) son elementos utilizados en las bases de datos
para almacenar datos de gran tamaño que cambian de forma dinámica.

Generalmente, estos datos son imágenes, archivos de sonido y otros objetos multimedia;

TINYBLOB
Una longitud máxima de 255 caracteres. Válido para objetos binarios como son un fichero de texto,
imágenes, ficheros de audio o vídeo. No distingue entre minúsculas y mayúsculas.
BLOB
Una longitud máxima de 65.535 caracteres. Válido para objetos binarios como son un fichero de texto,
imágenes, ficheros de audio o vídeo. No distingue entre minúsculas y mayúsculas.

MEDIUMBLOB
Una longitud máxima de 16.777.215 caracteres. Válido para objetos binarios como son un fichero de
texto, imágenes, ficheros de audio o vídeo. No distingue entre minúsculas y mayúsculas.

LONGBLOB
Una longitud máxima de 4.294.967.298 caracteres. Válido para objetos binarios como son un fichero de
texto, imágenes, ficheros de audio o vídeo. No distingue entre minúsculas y mayúsculas.

Listas
Tanto ENUM como SET, sirven para determinar los valores que puede tener un campo de una tabla, es
decir, puedes determinar que en un campo solamente pueda contener valores de una lista definida.

SET
Almacena 0, uno o varios valores de una lista con un máximo de 64 posibles valores.

ENUM
Igual que SET pero sólo puede almacenar un valor.

Text
La principal desventaja de TEXT es que no puede indexarse fácilmente (a diferencia de VARCHAR).

Tampoco se le puede asignar un valor predeterminado a un campo TEXT (un valor por omisión que se
complete automáticamente si no se ha proporcionado un valor al insertar un registro).

Sólo deberíamos utilizarlo para textos realmente muy largos, como los que mencionamos al comienzo
de este párrafo.

TINYTEXT
Una longitud máxima de 255 caracteres. Sirve para almacenar texto plano sin formato. Distingue entre
minúsculas y mayúsculas.

TEXT
Una longitud máxima de 65.535 caracteres. Sirve para almacenar texto plano sin formato. Distingue
entre minúsculas y mayúsculas.

MEDIUMTEXT
Una longitud máxima de 16.777.215 caracteres. Sirve para almacenar texto plano sin formato. Distingue
entre minúsculas y mayúsculas.

LONGTEXT
Una longitud máxima de 4.294.967.298 caracteres. Sirve para almacenar texto plano sin formato.
Distingue entre minúsculas y mayúsculas.
Fechas
DATE
Válido para almacenar una fecha con año, mes y día, su rango oscila entre ‘1000-01-01′ y ‘9999-12-31′.

DATETIME
Almacena una fecha (año-mes-día) y una hora (horas-minutos-segundos).

Su rango oscila entre: ‘1000-01-01 00:00:00′ y ‘9999-12-31 23:59:59′.

TIME
Válido para almacenar una hora (horas-minutos-segundos).

Su rango de horas oscila entre -838-59-59 y 838-59-59. El formato almacenado es ‘HH:MM:SS’.

TIMESTAMP
Almacena una fecha y hora UTC.

El rango de valores oscila entre ‘1970-01-01 00:00:01′ y ‘2038-01-19 03:14:07′.

YEAR
Almacena un año dado con 2 o 4 dígitos de longitud, por defecto son 4. El rango de valores oscila entre
1901 y 2155 con 4 dígitos. Mientras que con 2 dígitos el rango es desde 1970 a 2069 (70-69).

Otros tipos de datos


Referencias
Pueden referirse a:

● Documentación oficial en:


o https://dev.mysql.com/doc/refman/8.0/en/data-types.html
● Otros
o https://www.anerbarrena.com/tipos-dato-mysql-5024/
o https://disenowebakus.net/tipos-de-datos-mysql.php

También podría gustarte