Tipos de datos

Es en los tipos de datos donde más se diferencian las diversas versiones de SQL, puesto que dependen de la implementación del gestor. En MySQL hay tres tipos principales: numéricas, de cadenas y de fecha. Aunque dentro de cada uno de ellos hay mucha variedad, que veremos en breve, todos los datos se pueden dividir en estas tres grandes categorías.

Lo mejor será siempre intentar escoger el tipo de dato más pequeño posible para representar nuestros datos, porque reducirá el espacio ocupado por nuestras tablas y acelerará el acceso a las mismas. No obstante, escogerlo demasiado pequeño puede llevar a perdr datos.

Es en los tipos de datos donde más se diferencian las diversas versiones de SQL, puesto que dependen de la implementación del gestor. En MySQL hay tres tipos principales: numéricas, de cadenas y de fecha. Aunque dentro de cada uno de ellos hay mucha variedad, que veremos en breve, todos los datos se pueden dividir en estas tres grandes categorías.

Lo mejor será siempre intentar escoger el tipo de dato más pequeño posible para representar nuestros datos, porque reducirá el espacio ocupado por nuestras tablas y acelerará el acceso a las mismas. No obstante, escogerlo demasiado pequeño puede llevar a perdr datos.

Tipo Longitud Descripción
TINYINT[(M)] 1 byte Un entero muy pequeño, cuyo rango va de -128 a 127 (o de 0 a 255).
BIT, BOOL 1 byte Sinónimos de TINYINT(1)
SMALLINT[(M)] 2 bytes Un valor entero entre -32.768 y 32.767 (o de 0 a 65.535 si está sin signo).
MEDIUMINT[(M)] 3 bytes Entero entre -8.388.608 y 8.388.607 (o de 0 a 16.777.215).
INT[(M)],
INTEGER[(M)]
4 bytes Entero entre -2.147.483.648 y 2.147.483.647 (o de 0 a 4.294.967.295).
BIGINT[(M)] 8 bytes Un entero verdaderamente grande, entre -9.223.372.036.854.775.808 y 9.223.372.036.854.775.807. El máximo para campos sin signo es de 18.446.744.073.709.551.615.
FLOAT[(M,D)] 4 bytes Un valor en punto flotante con un rango de -3,402823466E+38 a -1,175494351E-38, y de 1,175494351E-38 a 3,402823466E+38.
DOUBLE[(M,D)],
DOUBLE PRECISION[(M,D)],
REAL[(M,D)]
8 bytes Un valor en punto flotante con un rango de -1,7976931348623157E+308 a -2,2250738585072014E-308, y de 2,2250738585072014E-308 a 1,7976931348623157E+308.
DECIMAL[(M[,D)]],
DEC[(M[,D)]],
NUMERIC[(M[,D)]]
1 byte por cifra Un número decimal almacenado como una cadena. M indica el número total de cifras (eso excluye el signo y el punto decimal) y D los dígitos situados detrás del punto decimal, que por defecto será 0.

Las columnas tipo cadena sirven para almacenar cualquier datos de tipo carácter, como nombres, direcciones o artículos.

Tipo Longitud Descripción
CHAR(M) [BINARY] M bytes Almacena M caracteres, como máximo 255.
VARCHAR(M) [BINARY] 1 byte + tamaño del contenido Almacena tantos caracteres como se le asigne hasta un tamaño máximo de M. No puede superar los 255 caracteres.
TINYTEXT 1 byte + tamaño Equivalente a VARCHAR(255), aunque más lento.
TEXT 2 bytes + tamaño Como TINYTEXT, pero con un máximo de 65.535 caracteres.
MEDIUMTEXT 3 bytes + tamaño Máximo de 16.777.215 caracteres.
LONGTEXT 4 bytes + tamaño Máximo de 4.294.967.295 caracteres
ENUM('valor1',…) - Enumeración. El campo sólo puede tener uno de los valores especificados, NULL o "".
SET('valor1',…) - Conjunto de 0 a 64 de los valores especificados..

Existe una serie de campos (TINYBLOB, BLOB, MEDIUMBLOB y LONGBLOB) equivalentes a sus versiones TEXT excepto en que la búsqueda se realiza en ellos diferenciando entre mayúsculas y minúsculas, cosa que no sucede en los campos de texto. Suelen emplearse para almacenar datos binarios (imágenes, por ejemplo).

Las columnas tipo fecha están diseñadas para trabajar con datos sobre el tiempo, como la hora del día o el día de nacimiento.

Tipo Descripción
DATETIME Formato YYYY-MM-DD HH:MM:SS. El rango va desde las 00:00:00 del 1 de enero del año 1000 a las 23:59:59 del 31 de diciembre de 9999. No le afecta el efecto 2000, claro.
DATE Formato YYYY-MM-DD, con el mismo rango que el anterior pero sin horas.
TIME Formato HH:MM:SS.
YEARt Solo almacena el año en formato YYYY.
TIMESTAMP Formato YYYYMMDDHHMMSS.

Este último tipo admite emplear como parámetro un número par, que indicará el número de cifras que se visualizarán y con las que se trabajarán, aunque internamente almacene las 14. Así, por ejemplo, TIMESTAMP(6) almacenaría YYYYMM.

« MySQL 4 | Creación de bases de datos

Si no se indica lo contrario, el contenido de esta página se ofrece bajo Creative Commons Attribution-ShareAlike 3.0 License