miércoles, 7 de mayo de 2014

Tipos de columnas permitidas en MySQL


MySQL soporta un número de tipos de columnas divididos en varias categorías: tipos numéricos, tipos de cadenas de caracteres  y tipos de fecha y hora.
En este capítulo se mencionan los tipos de columnas más utilizados proporcionando una breve descripción de cada categoría:

TIPO NUMÉRICO: INT, FLOAT
INT
La palabra clave INT es sinónimo de INTEGER. El tipo de columna INT incluye los tipos numéricos exactos (INT, TINYINT Y BIGINT).

La siguiente tabla muestra el almacenamiento requerido y el rango para cada uno de los tipos enteros.
Tipo
Bytes
Valor Mínimo
Valor Máximo
(Con signo/Sin signo)
(Con signo/Sin signo)
TINYINT
1
-128
127
0
255
INT
4
-2147483648
2147483647
0
4294967295
BIGINT
8
-9223372036854775808
9223372036854775807
0
18446744073709551615
Ancho a mostrar:
MySQL permite especificar el ancho a mostrar por el tipo de campo entero el cual debe estar entre paréntesis después de la palabra clave.
Ejemplo: codigo INT(4).
Esta especificación opcional se usa para alinear a la izquierda los valores con ancho menor que el ancho especificado para la columna.
El ancho indicado no restringe el rango de valores que puede almacenarse en el campo, ni el número de dígitos que exceda el ancho especificado.

ZEROFILL
Cuando se usa el atributo opcional ZEROFILL los espacios vacíos se reemplazan por ceros.
Ejemplo:
codigo INT(5) ZEROFILL
Si el valor de codigo es igual a 4, el valor que se mostrará es 00004.

UNSIGNED
Cuando se usa el atributo opcional UNSIGNED, solo se permitirá almacenar números positivos.
Si especifica ZEROFILL para un campo numérico MySQL añade automáticamente el atributo UNSIGNED al campo.



FLOAT
El tipo FLOAT se usa para representar números aproximados. El tipo de columna FLOAT incluye los tipos numéricos aproximados (REAL y DOUBLE PRECISION).
MySQL también soporta una sintaxis alternativa con dos números entre paréntesis a continuación de la palabra clave FLOAT.
El primer número representa el ancho a mostrar y el segundo número especifica el número de dígitos a almacenar a continuación del punto decimal.
MySQL redondea cuando se almacena un número que exceda los dígitos decimales especificados para la columna.
En SQL estándar, los tipos REAL y DOUBLE PRECISION no aceptan especificaciones de precisión.
Un ejemplo del formato sería: salary FLOAT(5,2) En este ejemplo, 5 es la precisión y 2 es la escala. La precisión representa el número de dígitos decimales significativos y la escala representa el número de dígitos que pueden almacenarse a continuación del punto decimal.
En este caso, por lo tanto, el rango de valores que puede almacenarse en la columna salary es desde -999.99 a 999.99.

TIPO CADENA DE CARACTERES: CHAR, ENUM, TEXT

VARCHAR
El tipo VARCHAR permite almacenar cadenas de caracteres. Su longitud puede ser de 0 a 65.535.
El tipo VARCHAR debe declararse indicando la longitud máximo de caracteres que se quiere almacenar.
Ejemplo:
descripcion VARCHAR(30)
el campo "descripcion" almacenara un máximo de 30 caracteres.

CHAR
El TIPO CHAR es similar a VARCHAR pero difieren en cómo se almacenan y recuperan. La longitud de un campo tipo CHAR es fija a la longitud declarada al crear la tabla. Cuando se almacena un valor en el campo CHAR con un número de caracteres menores al especificado se añaden espacios a la derecha hasta completar la longitud específica. Cuando se recupera el valor, estos espacios se borran.


ENUM
Un ENUM es un objeto de cadenas de caracteres con un valor elegido de una lista de valores permitidos que se enumeran explícitamente en la especificación de columna en tiempo de creación de la tabla.
  • El valor puede ser la cadena vacía ('') o NULL bajo ciertas circunstancias:
  • Si inserta un valor inválido en un ENUM (esto es, una cadena de caracteres no presente en la lista de valores permitidos), la cadena vacía se inserta en lugar de un valor especial de error. Esta cadena puede distinguirse de una cadena vacía “normal” por el hecho que esta cadena tiene un valor numérico 0. Más información posteriormente.
  • Si se declara una columna ENUM para permitir NULL, el valor NULL es un valor legal para la columna, y el valor por defecto es NULL. Si una columna ENUM se declara NOT NULL, su valor por defecto es el primer elemento de la lista de valores permitidos.
  • Una enumeración puede tener un máximo de 65,535 elementos.

TEXT
Las columnas TEXT se tratan como cadenas de caracteres no binarias (de caracteres).
No hay conversión de mayúsculas/minúsculas para columnas TEXT durante el almacenamiento o la recuperación.
Si asigna un valor a una columna TEXT que exceda la longitud máxima del tipo de la columna, el valor se trunca. Si los caracteres truncados no son espacios, aparece una advertencia.


TIPO DATE
Consideraciones generales a tener en cuenta cuando se trabaja con tipos de fecha y hora:
  • Las fechas con años de dos dígitos MySQL las interpreta usando las siguientes reglas:
  • Los años del rango 70-99 se convierten en 1970-1999.
  • Los años del rango 00-69 se convierten en 2000-2069.
  • Las fechas siempre deben darse en el orden año-mes-día (por ejemplo, '98-09-04'), en lugar del formato mes-día-año o día-mes-año usados comúnmente (por ejemplo, '09-04-98', '04-09-98').

TIPO TIME
MySQL devuelve y muestra los valores TIME en formato 'HH:MM:SS'
Puede especificar valores TIME en una variedad de formatos:
  • Como cadena de caracteres en formato 'HH:MM:SS'.
  • Como cadena de caracteres sin delimitadores en formato 'HHMMSS', mientras que tenga sentido como hora. Por ejemplo, '101112' se entiende como '10:11:12', pero '109712' es ilegal (no tiene una parte de minutos correcta) y pasa a ser '00:00:00'.
  • Como número en formato HHMMSS, mientras tenga sentido como hora. Por ejemplo, 101112 se entiende como'10:11:12'.


2 comentarios: