MySQL soporta todos los tipos de datos SQL numéricos estándar.
      Estos tipos incluyen los tipos numéricos exactos
      (INTEGER, SMALLINT,
      DECIMAL, y NUMERIC), así
      como los tipos de datos aproximados (FLOAT,
      REAL, y DOUBLE PRECISION).
      La palabra clave INT es sinónimo de
      INTEGER, y la palabra clave
      DEC es sinónimo de DECIMAL.
    
      En MySQL 5.0.3, un tipo de datos BIT está
      disponible para almacenar valores de un bit. (Antes de 5.0.3,
      MySQL interpreta BIT como
      TINYINT(1).) En MySQL 5.0.3,
      BIT lo soporta sólo tablas
      MyISAM. MySQL 5.0.5 extiende soporte de
      BIT para MEMORY,
      InnoDB, y BDB.
    
      Como extensión de los estándares SQL, MySQL soporta los tipos
      enteros TINYINT, MEDIUMINT,
      y BIGINT. La siguiente tablas 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 | ||
| SMALLINT | 2 | -32768 | 32767 | 
| 0 | 65535 | ||
| MEDIUMINT | 3 | -8388608 | 8388607 | 
| 0 | 16777215 | ||
| INT | 4 | -2147483648 | 2147483647 | 
| 0 | 4294967295 | ||
| BIGINT | 8 | -9223372036854775808 | 9223372036854775807 | 
| 0 | 18446744073709551615 | 
      MySQL soporta otra extensión para especificar de forma óptima el
      ancho a mostrar de un tipo entero en paréntesis después de la
      palabra clave para el tipo (por ejemplo,
      INT(4)). Esta especificación opcional del
      ancho de muestra se usa para alinear a la izquierda la muestra de
      los valores con ancho menor que el ancho especificado para la
      columna.
    
El ancho de muestra no restringe el rango de valores que pueden almacenarse en la columna, no el número de dígitos que se muestran para valores con ancho que exceda el especificado para la columna.
      Cuando se usa en conjunción con el atributo de extensión
      opcional ZEROFILL, el relleno por defecto de
      espacios se replaza por ceros. Por ejmplo, para una columna
      declarada como INT(5) ZEROFILL, un valor de
      4 se muestra como 00004.
      Tenga en cuenta que si almacena valores mayores que el ancho de
      muestra en una columna entera, puede tener problemas cuando MySQL
      genera tablas temporales para algunos joins complicados, ya que en
      estos casos MySQL cree que los datos encajan en el ancho original
      de la columna.
    
      Todos los tipos enteros pueden tener un atributo opcional (no
      estándar) UNSIGNED. Los valores sin signo
      pueden usarse cuando quiere permitir sólo números no negativos
      en una columna y necesita un rango numérico mayor para la
      columna.
    
      Tipos de coma flotante y de coma fija pueden ser
      UNSIGNED. Como con los tipos enteros, este
      atributo evita que los valores negativos se almacenen en la
      columna. Sin embargo, a diferencia de los tipos enteros, el rango
      superior de los valores de la columna sigue siendo el mismo.
    
      Si especifica ZEROFILL para una columna
      numérica, MySQL añade automáticamente el atributo
      UNSIGNED a la columna.
    
Para columnas de tipo coma flotante, MySQL usa cuatro bytes para valores de precisión simple y ocho bytes para valores de doble precisión.
      El tipo FLOAT se usa para representar tipos
      numéricos aproximados. El estándar SQL permite una
      especificación opcional de la precisión (pero no del rango del
      exponente) en bits a continación de la palabra clave
      FLOAT entre paréntesis. La implementación de
      MySQL soporta esta especificación opcional de precisión, pero el
      valor de precisión se usa sólo para determinar el tamaño de
      almacenamiento. Una precisión de 0 a 23 resulta en una columna de
      precisión simple de cuatro bytes de tamaño
      FLOAT . Una precisión de 24 a 53 resulta en
      una columna de doble precisión de ocho bytes de tamaño
      DOUBLE .
    
      Cuando se especifica la palaba clave FLOAT para
      tipos de columnas sin especificar la precisión, MySQSL usa cuatro
      bytes para almacenar los valors.MySQL también soporta una
      sintaxis alternativa con dos números entre paréntesis a
      continació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 ( como con DECIMAL y
      NUMERIC). Cuando se pide a MySQL que almacene
      un número para tales columnas con más dígitos decimales a
      continuación del punto decimal del especificado para la columna,
      el valor se redondea para elminar los dígitos extras cuando se
      almacena el valor.
    
      En SQL estándar, los tipos REAL y
      DOUBLE PRECISION no aceptan especificaciones de
      precisión. MySQL soporta una sintaxis alternativa con dos
      números dados entre paréntesis a continuación del nombre del
      tipo. El primer número representa el ancho a mostrar y el segundo
      número especifica el número de dígitos a almacenar y mostrar a
      continuación del punto decimal. Como una extensión al estándar
      SQL, MySQL reconoce DOUBLE como sinónimo del
      tipo DOUBLE PRECISION . En contraste con el
      requerimiento estándar que la precisión para
      REAL sea menor que la usada para
      DOUBLE PRECISION, MySQL implementa ambas como
      valores de punto flotante de doble precisión con tamaño de ocho
      bytes (a no ser que el modo SQL del servidor incluya la opción
      REAL_AS_FLOAT ).
    
      Para portabilidad máxima, el código que requiera almacenamiento
      de datos numéricos aproximados debe usar FLOAT
      o DOUBLE PRECISION sin especificar la
      precisión ni el número de dígitos decimales.
    
      Los tipos DECIMAL y NUMERIC
      se implementan como el mismo tipo en MySQL. Se usan para guardar
      valores para los que es importante preservar una precisión
      exacta, por ejemplo con datos monetarios. Cuando se declara una
      columna de alguno de estos tipos, la precisión y la escala puede
      especificarse (y usualmente se hace), por ejemplo:
    
salary DECIMAL(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 que se almacenan para
      los valores, y la escala representa el número de dígitos que
      pueden almacenarse a continuación del punto decimal.
    
      Desde MySQL 5.0.3, los valores DECIMAL y
      NUMERIC se almacenan en formato binario. Antes
      de 5.0.3, MySQL almacena los valores DECIMAL y
      NUMERIC como cadenas de caracteres, en lugar de
      binario. .Un carácter se usa para cada dígito del valor, el
      punto decimal (si la escala es mayor que 0), y el signo
      '-' (para números negativos). Si la escala es
      0, los valores DECIMAL y
      NUMERIC no contienen punto decimal o parte
      fraccional.
    
      SQL estándar requiere que la columna salary
      sea capaz de almacenar cualquier valor con cinco dígitos y dos
      decimales. En este caso, por lo tanto, el rango de valores que
      puede almacenarse en la columna salary es desde
      -999.99 a 999.99. MySQL
      fuerza este límite desde MySQL 5.0.3. Antes de 5.0.3, MySQL 5.0
      variaba este límite de forma que, en el límite positivo del
      rango, la columna podía almacenar números hasta
      9999.99. (Para números positivos, MySQL 5.0.2
      y anteriores usaba el byte reservado para el signo para extender
      el límite superior del rango.)
    
      En SQL estándar, la sintaxis
      DECIMAL( es
      equivalente a
      M)DECIMAL(.
      Similarmente, la sintaxis M,0)DECIMAL es
      equivalente a
      DECIMAL(, donde
      la implementación se permite para decidir el valor de
      M,0)M. Ambas formas de los tipos
      DECIMAL y NUMERIC se
      soportan en MySQL 5.0. El valor por defecto de
      M es 10.
    
      El máximo rango de los valores DECIMAL y
      NUMERIC es el mismo para
      DOUBLE, pero el rango real para un valor dado
      en una columna DECIMAL o
      NUMERIC puede restringirse con la precisión o
      escala para una columna dada. Cuando en tal columna se asigna un
      valor con más dígitos siguiendo el punto decimal de los
      permitidos por la escala específica, el valor se convierte a tal
      escala. (El comportamiento preciso depende del sistema operativo,
      pero generalmente el efecto es que se trunca al número de
      dígitos permitidos.)
    
      Desde MySQL 5.0.3, el tipo de datos BIT puede
      usarse para guardar valores de un bit. Un tipo
      BIT( permite el
      almacenamiento de valores de M)M-bit .
      M tiene un rango de 1 a 64.
    
      Para especificar valores bit, puede usar la notación
      b' .
      value'value es un valor binario escrito
      usando ceros y unos. Por ejemplo, b'111' y
      b'100000000' representan 7 y 128,
      respectivamente. Consulte Sección 9.1.5, “Valores de bits”.
    
      Si asigna un valor a una columna
      BIT( con menos de
      M)M bits , el valor se alinea a la
      izquierda con ceros. Por ejemplo, asignar un valor
      b'101' a una columna BIT(6)
      es, en efecto, lo mismo que asignar b'000101'.
    
Cuando se intenta almacenar un valor en una columna numérica que está fuera del rango permitido por la columna, MySQL corta el valor en el final del rango permitido y guarda el valor resultante.
      Por ejemplo, el ranto de una coluna INT es de
      -2147483648 a 2147483647. Si
      intenta insertar -9999999999 en una columna
      INT, MySQL reemplaza el valor con el mínimo
      valor del rango y almacena -2147483648 en su
      lugar. De forma similar, si trata de insertar
      9999999999, MySQL reemplaza el valor con el
      valor máximo del rango y almacena 2147483647
      en su lugar.
    
      Si la columna INT es
      UNSIGNED, el tamaño del rango de la columna es
      el mismo, pero los límites cambian a 0 y
      4294967295. Si intenta almacenar
      -9999999999 y 9999999999,
      los valores almacenados en la columna son 0 y
      4294967296.
    
Cuando se asigna un valor fuera de rango especificado (o por defecto) a una columna de coma flotante o fija, MySQL almacena el valor representado por el valor correspondiente al límite de rango correspondiente.
      Las conversiones debidas a valores fuera de rango se reportan como
      advertencias para los comandos ALTER TABLE,
      LOAD DATA INFILE, UPDATE, y
      INSERT de múltiples registros.
    
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

