Tipos de datos
Bueno ahora en esta ocasión como ya explicamos que al crear una tabla debemos elegir la estructura
adecuada, esto es, definir los campos y sus tipos más precisos, según el caso.
Por ejemplo, si un campo numérico almacenará solamente valores enteros
positivos el tipo "integer" con el atributo "unsigned" es
más adecuado que, por ejemplo un "float".
Hasta ahora hemos visto 3 tipos de datos: varchar, integer (con y sin
signo) y float (con y sin signo). Hay más tipos, incluso, subtipos.
Los valores que podemos guardar son:
A) TEXTO: Para almacenar texto usamos cadenas de caracteres. Las
cadenas se colocan entre comillas simples. Podemos almacenar dígitos con los
que no se realizan operaciones matemáticas, por ejemplo, códigos de
identificación, números de documentos, números telefónicos. Tenemos los
siguientes tipos: varchar, char y text.
B) NUMEROS: Existe variedad de tipos numéricos para representar
enteros, negativos, decimales. Para almacenar valores enteros, por ejemplo, en
campos que hacen referencia a cantidades, precios, etc., usamos el tipo
integer. Para almacenar valores con decimales utilizamos: float o decimal.
C) FECHAS Y HORAS: para guardar fechas y horas dispone de varios tipos:
date (fecha), datetime (fecha y hora), time (hora), year (año) y timestamp.
D) OTROS TIPOS: enum y set representan una enumeración y un conjunto
respectivamente. Lo veremos más adelante.
E) Otro valor que podemos almacenar es el valor "null". El
valor 'null' significa “valor desconocido” o "dato inexistente", ya
lo estudiamos. No es lo mismo que 0 o una cadena vacía.
Tipos de datos (Texto)
Para almacenar TEXTO usamos cadenas de caracteres. Las cadenas se
colocan entre comillas simples. Podemos almacenar dígitos con los que no se
realizan operaciones matemáticas, por ejemplo, códigos de identificación,
números de documentos, números telefónicos. Tenemos los siguientes tipos:
1) varchar(x): define una cadena de caracteres de longitud variable en
la cual determinamos el máximo de caracteres con el argumento "x" que
va entre paréntesis. Su rango va de 1 a 255 caracteres. Un varchar(10) ocupa 11
bytes, pues en uno de ellos almacena la longitud de la cadena. Ocupa un byte
más que la cantidad definida.
2) char(x): define una cadena de longitud fija, su rango es de 1 a 255
caracteres. Si la cadena ingresada es menor a la longitud definida (por ejemplo
cargamos 'Juan' en un char(10)), almacena espacios en blanco a la derecha,
tales espacios se eliminan al recuperarse el dato. Un char(10) ocupa 10 bytes,
pues al ser fija su longitud, no necesita ese byte adicional donde guardar la
longitud. Por ello, si la longitud es invariable, es conveniente utilizar el
tipo char; caso contrario, el tipo varchar.
Ocupa tantos bytes como se definen con el argumento "x". Si
ingresa un argumento mayor al permitido (255) aparece un mensaje indicando que
no se permite y sugiriendo que use "blob" o "text". Si
omite el argumento, coloca 1 por defecto.
3) blob o text: bloques de datos de 60000 caracteres de longitud aprox.
No lo veremos por ahora.
Para los tipos que almacenan cadenas, si asignamos una cadena de
caracteres de mayor longitud que la permitida o definida, la cadena se corta.
Por ejemplo, si definimos un campo de tipo varchar(10) y le asignamos la cadena
'Buenas tardes', se almacenará 'Buenas tar' ajustándose a la longitud de 10.
Es importante elegir el tipo de dato adecuado según el caso, el más
preciso. Por ejemplo, si vamos a almacenar un caracter, conviene usar char(1),
que ocupa 1 byte y no varchar(1), que ocupa 2 bytes.
Tipo Bytes
de almacenamiento
_______________________________________
char(x) x
varchar(x) x+1
Tipos de datos (numéricos)
Hasta ahora hemos visto 2 tipos de datos para almacenar valores
numéricos: integer (con y sin signo) y float (con y sin signo). Existe variedad
de tipos numéricos para representar enteros, negativos, decimales.
Para almacenar valores enteros, por ejemplo, en campos que hacen
referencia a cantidades, precios, etc., usamos: 1) integer(x) o int(x): su
rango es de -2000000000 a 2000000000 aprox. El tipo "int unsigned" va
de 0 a 4000000000. El tipo "integer" tiene subtipos:
- mediumint(x): va de –8000000 a 8000000 aprox. Sin signo va de 0 a
16000000 aprox.
- smallint(x): va de –30000 a 30000 aprox., sin signo, de 0 a 60000
aprox.
- tinyint(x): define un valor entero pequeño, cuyo rango es de -128 a
127. El tipo sin signo va de 0 a 255.
- bool o boolean: sinónimos de tinyint(1). Un valor cero se considera
falso, los valores distintos de cero, verdadero.
- bigint(x): es un entero largo. Va de –9000000000000000000 a 9000000000000000000
aprox. Sin signo es de 0 a 10000000000000000000.
Para almacenar valores con decimales utilizamos:
2) float (t,d): número de coma flotante. Su rango es de -3.4e+38 a
–1.1e-38 (9 cifras).
3) decimal o numeric (t,d): el primer argumento indica el total de
dígitos y el segundo, la cantidad de decimales. El rango depende de los
argumentos, también los bytes que ocupa. Si queremos almacenar valores entre
0.00 y 99.99 debemos definir el campo como tipo "decimal (4,2)". Si
no se indica el valor del segundo argumento, por defecto es 0. Para los tipos
"float" y "decimal" se utiliza el punto como separador de
decimales.
Todos los tipos enteros pueden tener el atributo "unsigned",
esto permite sólo valores positivos y duplica el rango. Los tipos de coma flotante
también aceptan el atributo "unsigned", pero el valor del límite superior
del rango no se modifica.
Es importante elegir el tipo de dato adecuado según el caso, el más
preciso. Por ejemplo, si un campo numérico almacenará valores positivos menores
a 10000, el tipo "int" no es el más adecuado, porque su rango va de
-2000000000 a 2000000000 aprox., conviene el tipo "smallint
unsigned", cuyo rango va de 0 a 60000 aprox. De esta manera usamos el
menor espacio de almacenamiento posible.
Tipo Bytes
de almacenamiento
_______________________________________
tinyint 1
smallint 2
mediumint 3
int 4
bigint 8
float 4
decimal(t,d) t+2 si d>0,
t+1 si d=0 y d+2 si t<d
Tipos de datos (fechas y horas)
Para guardar fechas y horas dispone de varios tipos:
1) date: representa una fecha con formato "YYYY-MM-DD". El
rango va de "1000-01-01" a "9999-12-31".
2) datetime: almacena fecha y hora, su formato es "YYYY-MM-DD
HH:MM:SS". El rango es de "1000-01-01 00:00:00" a
"9999-12-31 23:59:59".
3) time: una hora. Su formato es "HH:MM:SS". El rango va de
"-838:59:59" a "838:59:59".
4) year(2) y year(4): un año. Su formato es "YYYY" o
"YY". Permite valores desde 1901 a 2155 (en formato de 4 dígitos) y
desde 1970 a 2069 (en formato de 2 dígitos).
Si ingresamos los valores como cadenas, un valor entre "00" y
"69" es convertido a valores "year" en el rango de 2000 a
2069; si el valor está entre "70" y "99", se convierten a
valores "year" en el rango 1970 a 1999.
Si ingresamos un valor numérico 0, se convierte en "0000";
entre 1 y 69, se convierte a valores "year" entre 2001 a 2069; entre
70 y 99, es convertido a valores "year" de 1970 a 1999.
Para almacenar valores de tipo fecha se permiten como separadores
"/", "-" y ".".
Si ingresamos '06-12-31' (año de 2 dígitos), lo toma como '2006-12-31'.
Si ingresamos '2006-2-1' (mes y día de 1 dígito), lo toma como
'2006-02-01'.
Si ingresamos '20061231' (cadena sin separador), lo toma como
'2006-12-31'.
Si ingresamos 20061231 (numérico), lo toma como '2006-12-31'.
Si ingresamos '20061231153021' (cadena sin separadores), lo toma como
'2006-12-31 15:30:21'.
Si ingresamos '200612311530' (cadena sin separadores con un dato
faltante) no lo reconoce como fechahora y almacena ceros.
Si ingresamos '2006123' (cadena sin separadores con un dato faltante)
no lo reconoce como fecha y almacena ceros.
Si ingresamos '2006-12-31 11:30:21' (valor date time) en un campo
'date', toma sólo la parte de la fecha, la hora se corta, se guarda
'2006-12-31'.
Es importante elegir el tipo de dato adecuado según el caso, el más
preciso. Por ejemplo, si sólo necesitamos registrar un año (sin día ni mes), el
tipo adecuado es "year" y no "date".
Tipo Bytes
de almacenamiento
_______________________________________
date 3
datetime 8
time 3
year 1
Sigue con tu pagina wey es muy buena me gusto mas el nombre que le pusistes y el diseño esta buena igual.
ResponderEliminarGracias wey :) saludos espero que te encuentres bien.
ResponderEliminar