1. Tipos de Datos en Mysql y Maria DB
Para la definición de tipos de datos en MySQL, necesitamos la definición de crear un query
en la tabla que necesitamos y suplir no solo el nombre del campo o la columna sino tambien
su tipo, y tenemos varias posibilidades aquí en Mysql y MariaDB.
Primero hablemos de los tipos númericos.
Tenemos varios tipos de datos númericos en los que se encuentran: TINYINT, SMALLINT,
MEDIUMINT, INT, BIGINT.
Definir correctamente los campos en una tabla es importante para la optimización general de
tu Base de Datos, por eso debes usar solo el tipo y tamaño de campo que realmente
necesitas. Por ejemplo, no definas un campo de 10 caracteres de ancho, si sabes que solo
vas a utilizar 2 caracteres. Este tipo de campos (o columnas) también se conocen como tipos
de datos, después del tipo de datos que almacenará en esos campos.
MySQL y MariaDB usan muchos tipos de datos diferentes divididos en tres categorías:
• Numérico o NUMERIC
• Fecha y hora o DATE AND TYPES
• Cadenas o string types
A continuación vamos a discutirlos en detalle.:
Tipos de datos numéricos
MySQL usa todos los tipos de datos numéricos tipo ANSI, SQL, estándar,etc., por lo que si
vienes a MySQL desde un sistema de Base de Datos diferente, estas definiciones te
resultarán familiares.
2. La siguiente lista muestra los tipos de datos numéricos comunes y sus descripciones:
INT: es un entero de tamaño normal que se puede firmar o anular. Si está firmado, el rango
permitido es de -2147483648 a 2147483647. Si no está firmado, el rango permitido es de 0 a
4294967295. Puedes especificar un ancho de hasta 11 dígitos.
TINYINT: es un entero muy pequeño que se puede firmar o anular. Si está firmado, el rango
permitido es de -128 a 127. Si no está firmado, el rango permitido es de 0 a 255. Puedes
especificar un ancho de hasta 4 dígitos.
SMALLINT: es un entero pequeño que se puede firmar o anular. Si está firmado, el rango
permitido es de -32768 a 32767. Si no está firmado, el rango permitido es de 0 a 65535.
Puedes especificar un ancho de hasta 5 dígitos.
MEDIUMINT: es un entero de tamaño mediano que puede estar firmado o sin firmar. Si está
firmado, el rango permitido es de -8388608 a 8388607. Si no está firmado, el rango permitido
es de 0 a 16777215. Puedes especificar un ancho de hasta 9 dígitos.
BIGINT: es un entero grande que puede ser firmado o sin firmar. Si está firmado, el rango
permitido es de -9223372036854775808 a 9223372036854775807. Si no está firmado, el
rango permitido es de 0 a 18446744073709551615. Puedes especificar un ancho de hasta
20 dígitos.
FLOTADOR (M, D): es un número de punto flotante que no se puede anular. Puedes definir
la longitud de visualización (M) y el número de decimales (D). Esto no es obligatorio y por
defecto será de 10,2, donde 2 es el número de decimales y 10 es el número total de dígitos
(incluidos los decimales). La precisión decimal puede ir a 24 lugares para un FLOTADOR.
DOBLE (M, D): es un número de coma flotante de precisión doble que no se puede anular.
Puedes definir la longitud de visualización (M) y el número de decimales (D). Esto no es
obligatorio y por defecto será 16,4, donde 4 es el número de decimales. La precisión decimal
puede ir a 53 lugares para un DOBLE. Aquí REAL es un sinónimo de DOBLE.
DECIMAL (M, D): es un número de punto flotante desempaquetado que no se puede anular.
En los decimales sin empaquetar, cada decimal corresponde a un byte. Se requiere definir la
longitud de visualización (M) y el número de decimales (D). NUMERIC es un sinónimo de
DECIMAL.
3. Tipos de datos de fecha y hora
Los tipos de datos de fecha y hora de MySQL son los siguientes:
FECHA: una fecha en formato AAAA-MM-DD, entre el 1000-01-01 y el 9999-12-31. Por
ejemplo, el 30 de diciembre de 1973 se almacenaría como 1973-12-30.
DATETIME: es una combinación de fecha y hora en el formato YYYY-MM-DD HH: MM: SS,
entre el 1000-01-01 00:00:00 y el 9999-12-31 23:59:59. Por ejemplo, las 3:30 de la tarde del
30 de diciembre de 1973 se almacenarán como 1973-12-30 15:30:00.
TIMESTAMP: una marca de tiempo entre la medianoche del 1 de enero de 1970 y en algún
momento de 2037. Se parece al formato DATETIME anterior, pero sin los guiones entre los
números; Las 3:30 de la tarde del 30 de diciembre de 1973 se almacenarán como
19731230153000 (YYYYMMDDHHMMSS).
HOUR: almacena la hora en un formato HH: MM: SS.
YEAR (M): almacena un año en un formato de 2 o 4 dígitos. Si la longitud se especifica como
2 (por ejemplo, YEAR (2)), YEAR puede estar entre 1970 y 2069 (70 a 69). Si la longitud se
especifica como 4, YEAR puede ser 1901 a 2155. La longitud predeterminada es 4.
Tipos de cadenas
Aunque los tipos numéricos y de fecha son divertidos, la mayoría de los datos que
almacenará estarán en un formato de cadena. Esta lista describe los tipos de datos de
cadenas comunes en MySQL.
CHAR (M): una cadena de longitud fija entre 1 y 255 caracteres de longitud (por ejemplo,
CHAR (5)), rellena a la derecha con espacios en la longitud especificada cuando se
almacena. No es necesario definir una longitud, pero el valor predeterminado es 1.
VARCHAR (M): una cadena de longitud variable entre 1 y 255 caracteres de longitud. Por
ejemplo, VARCHAR (25). Debe definir una longitud al crear un campo VARCHAR.
4. BLOB ó TEXTO: son un campo con una longitud máxima de 65535 carácteres. Los BLOB
son "objetos binarios grandes" y se utilizan para almacenar grandes cantidades de datos
binarios, como imágenes u otros tipos de archivos. Los campos definidos como TEXT
también contienen grandes cantidades de datos. La diferencia entre los dos es que las
clasificaciones y comparaciones en los datos almacenados son sensibles a las mayúsculas y
minúsculas en los BLOB y no son sensibles a las mayúsculas y minúsculas en los campos de
texto. No se especifica una longitud con BLOB o TEXTO.
TINYBLOB ó TINYTEXT: es una columna BLOB o TEXT con una longitud máxima de 255
caracteres.
MEDIUMBLOB ó MEDIUMTEXT: es una columna BLOB o TEXTO con una longitud máxima
de 16777215 caracteres.
LONGBLOB o LONGTEXT: una columna BLOB o TEXT con una longitud máxima de
4294967295 caracteres.
ENUM: Al definir un ENUM, estas creando una lista de elementos entre los que se debe
seleccionar el valor (o puede ser NULL). Por ejemplo, si deseas que su campo contenga "A"
o "B" o "C", definiría su ENUM como ENUM ('A', 'B', 'C') y solo esos valores (o NULL) alguna
vez podría poblar ese campo.