12, noviembre - 2018

Los tipos de datos en MySQL

Los tipos de datos en MySQL

MySQL como la mayoría se sistemas o servidores de bases de datos admite una gran variedad de posibles tipos de datos a la hora de poder crear una base de datos y de generar posteriormente las tablas de almacenamiento de información. Estos tipos de datos van a ser claves para que todo funcione con normalidad y la base de datos nos ofrezca un buen rendimiento cuando estemos trabajando con ella, especialmente si la información que va a contener es muy extensa y pesada.

Los tipos de datos se añaden en cada columna que se cree cuando creamos una tabla de una base de datos, además de esto, podemos indicar otros atributos a las columnas que creemos que también van a ser importantes para poder trabajar después con una base de datos potente y robusta. Atributos como cotejamiento de datos, posibilidad de insertar un campo ‘nulo’ o no, valores por defecto, índices, etc…

En esta página vamos a ver todos esos atributos y a explicarlos con detenimiento para poder saber con exactitud qué estamos haciendo en la creación de nuestras tablas MySQL.

Definición. Qué es un tipo de dato

Un tipo de dato es el formato que van a tener cuando se envíen a la columna de tabla que corresponda, y la forma en la que el sistema podrá almacenarlos en dicha columna, estos pueden ser de varios tipos principales como datos numéricos, datos alfanuméricas, datos de fechas y marcas temporales, datos boleeanos, datos espaciales y recientemente también datos en formato JSON. cada uno de esos tipos principales tendrá así mismo una gran cantidad de formatos posibles, por ejemplo para el caso de datos numéricos tendremos oportunidad de indicar qué longitudes tendrán esas cifras, si serán con decimales o no, etc…

Si marcamos bien el tipo de dato y después enviamos solo datos de ese tipo en cada columna que creemos, vamos a asegurar que el sistema no tendrá ninguna dificultad de almacenamiento y vamos a poder obtener un rendimiento óptimo sin derrochar  las capacidades del servidor físico donde esté funcionando.

Descripción. Tipos de datos

Tipos de datos enteros

Los tipos de datos enteros permiten guardar números enteros con signo o sin él (solo positivos), estos pueden variar dependiendo de la longitud que queramos puedan tener esos números.
El formato para poder guardar este tipo de datos enteros sería el siguiente

type[ ( M )] [UNSIGNED] [ZEROFILL]

  • La inicial M corresponde al número de dígitos que podrán tener los números.
  • La instrucción UNSIGNED hará referencia a que no podrán tener signo negativo y todos los números que almacenemos serán positivos.
  • La instrucción ZEROFILL indicará al sistema que rellene con ceros a la izquierda hasta completar el número de dígitos que hayamos marcado o en caso de no hacerlo al número de dígitos por defecto del tipo concreto que hayamos indicado.

Vemos a continuación la tabla que muestra los tipos enteros que hay disponibles.

TIPOINTERVALOTAMAÑO (en bytes)DESCRIPCIÓN
TINYINT [(M)]-127 a 1281Enteros muy cortos
TINYINT [(M)] UNSIGNED0 a 2551Enteros muy cortos
SMALLINT [(M)]-32 768 a 32 7672Enteros cortos
SMALLINT [(M)] UNSIGNED0 a 65 5352Enteros cortos
MEDIUMINT [(M)]-8 388 608 a 8 388 6073Enteros de tamaño medio
MEDIUMINT [(M)] UNSIGNED0 a 16 777 2153Enteros de tamaño medio
INT [(M)]-231 a 231 -14Enteros
INT [(M)] UNSIGNED0 a 231 -14Enteros
INTEGER [(M)]Sinónimo de enteros
BIGINT [(M)]-263 a 263 -18Enteros de gran tamaño
BIGINT [(M)] UNSIGNED0 a 264 -18Enteros de gran tamaño

Tipos de datos en coma flotante

Los tipos de datos en coma flotante permiten guardar números con signo o sin él (solo positivos), y con decimales, estos pueden variar dependiendo de la longitud que queramos puedan tener esos números.
El formato para poder guardar este tipo de datos enteros sería el siguiente

type[ ( M [, D] )] [UNSIGNED] [ZEROFILL]

  • La inicial M corresponde al número de dígitos que podrán tener los números y D al número de decimales, no pudiendo ser superior el número de decimales al de dígitos
  • La instrucción UNSIGNED hará referencia a que no podrán tener signo negativo y todos los números que almacenemos serán positivos
  • La instrucción ZEROFILL indicará al sistema que rellene con ceros a la izquierda hasta completar el número de dígitos que hayamos marcado o en caso de no hacerlo al número de dígitos por defecto del tipo concreto que hayamos indicado.

Vemos a continuación la tabla que muestra los tipos de datos en coma flotante que hay disponibles.

TIPOINTERVALOTAMAÑO (en bytes)DESCRIPCIÓN
FLOAT [ precisión ]Dependiendo de la precisiónvaríaLa precisión puede ser de <= 24 para números simples y de >24 y <=53 para números de doble precisión
FLOAT [(M, D)]+ o -1.175494351E-38 a + o 3.402823466E+384Precisión simple, equivale a FLOAT(4) especificando los números M y D
DOUBLE [(M, D)]+ o -1.7976931348623157E+308 a + o -2.2250738585072014E-3088Doble precisión, equivale a FLOAT(8) especificando los números M y D
DOUBLE PRECISION [(M, D)]Dependiendo de la precisiónvaríaSinónimo de DOUBLE[(M, D)]
REAL [(M, D)]Sinónimo de FLOATvaríaSinónimo de DOUBLE[(M, D)]
DECIMAL [(M, D)]La mayor cantidad de números M es de 65 y la mayor cantidad de números D es de 30M+2Número de coma flotante.

Tipos de datos fecha y hora

MySQL posee una gran variedad de formas de guardar información relacionada con marcas de tiempo (fecha) y hora, en formatos numéricos o de cadenas de texto. Dependiendo del valor que queramos que se asignen las fechas que guardemos con posterioridad es importante que marquemos un tipo u otro.
La sintaxis de la instrucción sería la siguiente.

type [ (YYYY-MM-DD HH:MM:SS) ] [ (NULL) (CURRENT_TIMESTAMP) ] [ (on_update CURRENT_TIMESTAMP) ]

  • Donde NULL hace referencia a que puede contener un valor nulo por defecto
  • CURRENT_TIMESTAMP indicaría que en el momento de la inserción de datos guarde la fecha y hora actuales
  • Y on_update CURRENT_TIMESTAMP estaría indicando que también en las actualizaciones cambie la fecha y hora para saber cuando se modificó algún campo

Vemos los tipos que soportan datos de fecha y hora.

TIPOINTERVALODESCRIPCIÓN
DATEDe 1000-0101 a 9999-12-31Fecha sin hora en formato YYYY-MM-DD
TIMEDe -838:59:59 a 838:59:59Horas sin fechas en formato HH:MM:SS
DATETIMEDe 1000-01-01 00:00:00 a 9999-12-31 23:59:59Fechas y horas en formato YYYY-MM-DD HH:MM:SS
TIMESTAMP [(M)]1970-01-01 00:00:00Marca de fecha y hora en formato por defecto YYYY-MM-DD HH:MM:SS
YEAR [(2)]00 a 99Dato de año en formato de dos dígitos
YEAR [(4)]1901 a 2155Dato de año en formato de cuatro dígitos

El formato Timestamp

Este formato o tipo de dato es particular, por lo general, al insertar un dato con este formato si no especificamos un valor por defecto o un valor en el momento de la insercción el sistema guardará de forma automática la fecha y hora actuales en el momento de la inserción (siempre será el mismo que tenga configurado el servidor donde esté funcionando la base de datos). Es un formato ideal para conservar un historial de transacciones, o para saber el momento exacto en el que fue insertados o cambiados los datos de la tabla en la que esté presente.

Si una tabla posee varias columnas con formato TIMESTAMP solo la primera tomará la fecha y hora actuales, el resto tendrán que asignar valores por defecto o datos marcados en las inserciones o actualizaciones de datos. También podemos indicar la fecha y hora del momento exacto de la transacción mediante la función interna del sistema NOW(), pero esto lo veremos en entregas más adelante.

Vemos los tipos que soportan datos de fecha y hora timestamp.

TIPOFORMATODESCRIPCIÓN
TIMESTAMPYYYYMMDDHHMMSSFecha y hora actuales en formato por defecto YYYY-MM-DD HH:MM:SS
TIMESTAMP(14)YYYYMMDDHHMMSSIgual que el tipo por defecto
TIMESTAMP(12)YYMMDDHHMMSSFecha y hora actuales en formato YY-MM-DD HH:MM:SS (dos dígitos para el año)
TIMESTAMP(10)YYMMDDHHMMFecha y hora actuales en formato YY-MM-DD HH:MM (dos dígitos para el año sin segundos)

Tipos de datos de cadenas de caracteres

Los tipos de datos en cadenas alfanuméricas soportan dos tipos de datos principales, el tipo CHAR (de longitud fija) y el tipo VARCHAR (de longitud variable). También presentan algunas particularidades precisas, el tipo CHAR al ser de longitud fija, completa con espacios en blanco los caracteres que pudieran faltar de la cadena, de esa forma, si definimos un tipo CHAR(5) e ingresamos ‘abc’ completará dos espacios vacíos o en blanco hasta llegar a los 5 de longitud marcada, de la forma contraria, si se insertan más caracteres, cortará la cadena en la posición 5. El tipo VARCHAR se adapta a la longitud de la cadena, favoreciendo el espacio en disco de los datos, mientras que el tipo CHAR favorece el mejor rendimiento de la base de datos. Siempre y cuando estemos completamente seguros de la longitud que tendrá la cadena a ingresar debemos usar el tipo CHAR mientras que de la forma contraria, cuando no sepamos con exactitud esa longitud usaremos el tipo VARCHAR. En los dos casos la longitud máxima de la cadena será de 255 caracteres, para longitudes mayores usaremos otro tipo de datos que veremos a continuación.

Nota: Si una tabla contiene al menos una columna de tipo VARCHAR y usamos columnas de tipo CHAR de más de 4 caracteres, todas las columnas se convertirán de forma automática en VARCHAR de la misma longitud.

Vemos los tipos que soportan datos de cadenas alfanuméricas de tipo CHAR y VARCHAR.

TIPOLONGITUDDESCRIPCIÓN
CHAR(M)De 1 a 255Cadena de longitud fija donde M especifica el número de caracteres.
VARCHAR(M)De 1 a 255Cadena de longitud variable donde M especifica el número máximo de caracteres.

Los formatos de tipos de cadenas TEXT y BLOB

Este tipo de datos permiten guardar cadenas alfanuméricas de tamaños elevados. A su vez pueden ser de tipo texto o binario, el tipo de datos BLOB (Binary Large OBjects) permiten guardar datos en formato binario con información como una imagen o un sonido. El tipo TEXT permite guardar cadenas de texto de tamaños elevados distinguiendo entre mayúsculas y minúsculas. Debido al gran tamaño que permiten alojar estos tipos de datos han de usarse con precaución y siempre que sean necesarios.

Tipos de datos booleanos

Definición del resto de atributos

¿Te ha parecido interesante este contenido..?
En ese caso, te pedimos por favor que nos des tu valoración graicas a esto podemos mejorar nuestras lecciones. Gracias.
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (Ninguna valoración todavía)
Cargando…

Social Media

  • YouTube

    Suscríbete a nuestro canal de YouTube para ver todos nuestros vídeos sobre programación

  • Twitter

    Síguenos en Twitter e infórmanos de ello, es muy probable que también te sigamos

  • Facebook

    Estamos pensando si abrir una página de Facebook o no...

  • LinkedIn

    En breve...

  • Instagram

    En breve...

  • Github

    En breve...

A %d blogueros les gusta esto: