Está en la página 1de 8

TIPOS DE DATOS EN MYSQL

Uno de los conceptos bsicos que debemos tener presente siempre a la hora de
trabajar con bases de datos mySQL (o cualquier otra) es el tipo de datos que podemos
utilizar para introducir registros en cada una de las tablas de la base de datos.
Tipos de Datos?
Creo que este concepto es muy fcil de entender. La informacin podemos
representarla por medio de smbolos numricos, alfanumricos, formatos de fecha,
hora, binarios, etc. Todas estas clases o divisiones son tipos de datos. Si tenemos un
nmero que nos indica la cantidad de dinero que disponemos en una cuenta bancaria
en Suiza diremos que tenemos un tipo de datos numrico. Nuestra fecha de
cumpleaos es un tipo de dato de fecha, etc.
mySQL distingue una serie de tipos de datos que podremos utilizar a la hora de crear
los campos que formarn nuestras tablas. Veamos a continuacin estos tipos:
Tipo Texto (Char(x), Varchar(x), Text, TinyText, MediumText,
LongText)
Char(x).- Tipo de datos que admite caracteres alfanumricos. La longitud de este
campo vara entre 1-255 y est delimitado a la longitud especificada entre parntesis
(x) en el momento de la creacin del campo de la tabla. Al introducir datos en este
campo siempre se solicitar el nmero de caracteres especificados. Si creamos un
campo con Char(5) deberemos introducir cinco caracteres cada vez que incluyamos un
dato en ese campo. Si incluimos menos, mySQL rellenar los caracteres que faltan
hasta el nmero indicado con espacios.
Varchar(x).- Tipo de datos que admite caracteres alfanumricos. Su uso es similar a
Char(x). A la hora de definir un campo de datos Varchar deberemos especificar el
nmero mximo de caracteres que podr aceptar en la entrada de datos, donde x es
un nmero entre 1-255. A diferencia de Char, este tipo de datos es variable en su
longitud, admitiendo entradas inferiores a la establecida.
Text, TinyText,
MediumText,
LongText
Mediante la declaracin de este tipo de datos se admiten la inclusin decadenas
alfanumricas "case-insensitive" de longitudes variables.TinyText admite un mximo
de 255 caractres, Text admite 65.535, MediumText permite introducir textos de hasta
16.777.215 caracteres, LongText nos ofrece la posibilidad de incluir un mximo de
4.294.967.295 caracteres. Estos campos no necesitan de especificaciones de longitud a
la hora de ser declarados.
Tipo Binario (Blob, TinyBlob, MediumBlob, LongBlob)
Blob.- Un tipo de datos Blob es un objeto binario que puede almacenar cualquier tipo
de datos o informacin, desde un archivo de texto con todo su formato (se diferencia
en esto del tipo Text) hasta imgenes, archivos de sonido o video, etc. Al igual que el
tipo Text, Blob admite hasta 65.535 caracteres.
TinyBlob,
MediumBlob,
LongBlob
Son datos del mismo tipo que el anterior pero que varan en cuanto a su tamao, as
TinyBlob admite hasta 255 caracteres mximo, MediumBlob acepta tamaos de hasta
16.777.215 de caracteres y LongBlob 4.294.967.295 caracteres (como vemos estos
tamaos se corresponden con los de TinyText, MediumText y LongText).
Tipo numrico (TinyInt, SmallInt, MediumInt, Int, BigInt, Float,
Double, Decimal)
Int.- Este es un tipo de datos numricos de tipo entero. Este tipo de datos guarda
valores enteros (no decimales) entre -2.147.483.648 y 2.147.483.647.
TinyiInt,
SmallInt,
MediumInt,
BigInt
Son tipos de datos numricos enteros (no decimal). TinyiInt agrupa un rango de
nmeros entre -128 y 127. SmallInt alcanza desde -32.768 hasta 32.767. MediumInt
tiene un rango comprendido entre -8.388.608 y 8.388.607. Finalmente el tipo de datos
BigInt ocupa un rango numrico entre -9.223.372.036.854.775.808 hasta
9.223.372.036.854.775.807.
Float (M,D).- Nmero de coma flotante de precisin simple. El valor del argumento
M nos indica el nmero de digitos decimales que se van a utilizar para representar el
nmero. As, un valor de 5 nos permitir representar nmeros comprendidos entre -99
y 99 (Numeros expresados en binario con 5 dgitos y signo). El valor del argumento D
nos indica el nmero de posiciones decimales que se van a utilizar en la representacin
del nmero. As, una representacin tipo Float (5,2) nos permitir incluir nmeros
entre -99,99 y 99,99. El rango de los nmeros de coma flotante de precisin simple es
de -3,402823466E+38 a -1,175494351E-38, 0, y 1,175494351E-38 hasta
3,402823466E+38.
Double (M,D).- Nmero de coma flotante de precisin doble. Es un tipo de datos
igual al anterior cuya nica diferencia es el rango numrico que abraca, siendo este el
comprendido entre 1,7976931348623157E+308 hasta -2,.2250738585072014E-308, 0,
y 2,2250738585072014E-308 to 1,7976931348623157E+308
Decimal (M,D).- Su uso es similar al de los anteriores, pero, en este caso, D puede
tener valor 0. El rango de este nmero es el mismo que el de nmero con coma
flotante de precisin doble.
Tipo Fecha-Hora (Date, DateTime, TimeStamp, Time, Year)
Date.- Formato de Fecha. Su representacin es en formato de fecha numrica del tipo
'YYYY-MM-DD' (Ao con cuatro dgitos, Mes con dos dgitos, da con dos dgitos). Su
rango es '1000-01-01' (1 de enero del ao 1000, en el cual yo era an muy pequeo)
hasta '9999-12-31' (31 de diciembre del 9999, que ya veremos que pasa despus de las
uvas)
DateTime.- Es una combinacin de formato de fecha y hora conjuntamente. Su
representacin es 'YYYY-MM-DD HH:MM:SS' (Ao con cuatro dgitos, Mes con dos
dgitos, da con dos dgitos, hora con dos dgitos, minutos con dos dgitos, segundos
con dos dgitos). El rango que soporta este formato es de '1000-01-01 00:00:00' (las 00
horas, 00 minutos, 00 segundos del 1 de enero del ao 1000, que no se yo con que
reloj podan medir esto) hasta '9999-12-31 23:59:59' (las 23 horas, 59 minutos, 59
segundos del 31 de diciembre del ao 9999, es decir, justo antes de las campanadas y
una vez que han acabado los cuartos).
TimeStamp(N).- Este es un tipo de datos muy particular. Necesita de un argumento
N que puede ser uno de estos nmeros; 14, 12, 10, 8, 6, 4, 2. N representa el nmero
de dgitos que se utilizarn para repsentar un valor de fecha y hora comprendido
desde el inicio del ao 1970 hasta algn momento del ao 2037.As:
TimeStamp(14): YYYYMMDDHHMMSS (Ao 4 dgitos + mes + da + hora + minutos +
segundos 2 dgitos)
TimeStamp(12): YYMMDDHHMMSS (Ao 2 dgitos + mes + da + hora + minutos +
segundos 2 dgitos)
TimeStamp(10): YYMMDDHHMM (Ao + mes + da + hora + minutos 2 dgitos)
TimeStamp(8): YYMMDDHH (Ao + mes + da + hora 2 dgitos)
TimeStamp(6): YYMMDD (Ao + mes + da 2 dgitos)
TimeStamp(4): YYMM (Ao + mes 2 dgitos)
TimeStamp(2): YY (Ao 2 dgitos)
Time.- Tipo de datos con formato de Hora. mySQL muestra valores de hora
conformato 'HH:MM:SS'
Year(D).- Tipo de datos con formato de ao. Su representacin puede ser 'YYYY' (ao
con formato de 4 dgitos) o 'YY' (ao con formato de 2 dgitos) donde el valor del
argumento D puede ser 4 o 2 respectivamente. Este ha sido un breve repaso a los tipos
de datos que podemos utilizar a la hora de crear campos de datos en tablas de bases
de datos mySQL. Recomiendo (yo y todos) analizar profundamente el tipo de datos
que se van a utlizar en cada campo ya que de esta manera podemos mejorar el
rendimiento de nuestra base de datos en un porcentaje muy grande.
222222222222222222222222222222222222222222222222222222222222222222222
222222222222222222222222222222222222222222222222222222222222222222222
Los tipos de datos que puede haber en un campo, se pueden agrupar en tres
grandes grupos:
1. Tipos numricos

2. Tipos de Fecha

3. Tipos de Cadena
1 Tipos numricos:

Existen tipos de datos numricos, que se pueden dividir en dos grandes
grupos, los que estn en coma flotante (con decimales) y los que no.

TinyInt: es un nmero entero con o sin signo. Con signo el rango de valores
vlidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255

Bit Bool: un nmero entero que puede ser 0 1

SmallInt: nmero entero con o sin signo. Con signo el rango de valores va
desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535.

MediumInt: nmero entero con o sin signo. Con signo el rango de valores va
desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0 a16777215.

Integer, Int: nmero entero con o sin signo. Con signo el rango de valores va
desde -2147483648 a 2147483647. Sin signo el rango va desde 0 a
429.4967.295

BigInt: nmero entero con o sin signo. Con signo el rango de valores va desde
-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango
va desde 0 a 18.446.744.073.709.551.615.

Float: nmero pequeo en coma flotante de precisin simple. Los valores
vlidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde
1.175494351E-38 a 3.402823466E+38.

xReal, Double: nmero en coma flotante de precisin doble. Los valores
permitidos van desde -1.7976931348623157E+308 a -2.2250738585072014E-
308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308

Decimal, Dec, Numeric: Nmero en coma flotante desempaquetado. El
nmero se almacena como una cadena

Tipo de
Campo
Tamao de
Almacenamiento
TINYINT 1 byte
SMALLINT 2 bytes
MEDIUMINT 3 bytes
INT 4 bytes
INTEGER 4 bytes
BIGINT 8 bytes
FLOAT(X) 4 8 bytes
FLOAT 4 bytes
DOUBLE 8 bytes
DOUBLE
PRECISION 8 bytes
REAL 8 bytes
DECIMAL(M,D
M+2 bytes s D >
0, M+1 bytes s D
= 0
NUMERIC(M,D)
M+2 bytes if D >
0, M+1 bytes if D
= 0


2 Tipos fecha:

A la hora de almacenar fechas, hay que tener en cuenta que Mysql no
comprueba de una manera estricta si una fecha es vlida o no. Simplemente
comprueba que el mes esta comprendido entre 0 y 12 y que el da esta
comprendido entre 0 y 31.
Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de
enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es
de ao-mes-dia

DateTime: Combinacin de fecha y hora. El rango de valores va desde el 1 de
enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del
9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento
es de ao-mes-dia horas:minutos:segundos

TimeStamp: Combinacin de fecha y hora. El rango va desde el 1 de enero de
1970 al ao 2037. El formato de almacenamiento depende del tamao del
campo:

Tamao Formato
14
AoMesDiaHoraMinutoSegundo
aaaammddhhmmss
12
AoMesDiaHoraMinutoSegundo
aammddhhmmss
8 oMesDia aaaammdd
6 AoMesDia aammdd
4 AoMes aamm
2 Ao aa


Time: almacena una hora. El rango de horas va desde -838 horas, 59 minutos
y 59 segundos a 838, 59 minutos y 59 segundos. El formato de
almacenamiento es de 'HH:MM:SS'

Year: almacena un ao. El rango de valores permitidos va desde el ao 1901 al
ao 2155. El campo puede tener tamao dos o tamao 4 dependiendo de si
queremos almacenar el ao con dos o cuatro dgitos.

Tipo de
Campo
Tamao de
Almacenamiento
DATE 3 bytes
DATETIME 8 bytes
TIMESTAMP 4 bytes
TIME 3 bytes
YEAR 1 byte


3 Tipos de cadena:

Char(n): almacena una cadena de longitud fija. La cadena podr contener
desde 0 a 255 caracteres.

VarChar(n): almacena una cadena de longitud variable. La cadena podr
contener desde 0 a 255 caracteres.

Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los tipo
Test y los tipo BLOB (Binary large Object)

La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de
realizar ordenamientos y comparaciones. Mientras que el tipo test se ordena
sin tener en cuenta las Maysculas y las minsculas, el tipo BLOB se ordena
tenindolas en cuenta.

Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser
ficheros.

TinyText y TinyBlob: Columna con una longitud mxima de 255 caracteres.

Blob y Text: un texto con un mximo de 65535 caracteres.

MediumBlob y MediumText: un texto con un mximo de 16.777.215
caracteres.

LongBlob y LongText: un texto con un mximo de caracteres 4.294.967.295.
Hay que tener en cuenta que debido a los protocolos de comunicacin los
paquetes pueden tener un mximo de 16 Mb.

Enum: campo que puede tener un nico valor de una lista que se especifica. El
tipo Enum acepta hasta 65535 valores distintos

Set: un campo que puede contener ninguno, uno varios valores de una lista.
La lista puede tener un mximo de 64 valores.

Tipo de campo
Tamao de
Almacenamiento
CHAR(n) n bytes
VARCHAR(n) n +1 bytes
TINYBLOB, TINYTEXT Longitud+1 bytes
BLOB, TEXT Longitud +2 bytes
MEDIUMBLOB,
MEDIUMTEXT Longitud +3 bytes
LONGBLOB, LONGTEXT Longitud +4 bytes
ENUM('value1','value2',...)
1 dos bytes dependiendo
del nmero de valores
SET('value1','value2',...)
1, 2, 3, 4 8 bytes,
dependiendo del nmero
de valores


Diferencia de almacenamiento entre los tipos Char y VarChar

Valor CHAR(4)
Almace
namiento VARCHAR(4)
Almace
namiento
'' '' 4 bytes " 1 byte
'ab' 'ab ' 4 bytes 'ab' 3 bytes
'abcd' 'abcd' 4 bytes 'abcd'
'abcdefgh' 'abcd' 4 bytes 'abcd' 5 bytes

También podría gustarte