MySQL – Datos numéricos de coma fija

Objetivo: Introducir el tipo DECIMAL para la representación de datos numéricos de coma fija en MySQL.

Hemos tratado ya el tipo INTEGER para la introducción de datos numéricos enteros en una tabla MySQL. Pero supongamos que tenemos que definir un campo para almacenar el precio exacto en euros de un determinado artículo; es obvio que necesitamos otro tipo de representación que permita introducir los decimales de los céntimos.

Para poder almacenar numeros con cifras decimales exactas, también conocidos de coma fija (en oposición a los de coma flotante para números reales en general, que trataremos más adelante), MySQL dispone del tipo de datos DECIMAL, que puede simplificarse como DEC.

Su sintaxis es DECIMAL(m,n), donde m es el número máximo de cifras en total (incluyendo la parte decimal) y n es el número de cifras después de la coma.

Por ejemplo; imagínate que sabes que el precio de un artículo en euros siempre será inferior a 100 euros. Es decir, el precio máximo sería 99’99 euros. ¿Cómo representaríamos este tipo de columna?

El número máximo de cifras es cuatro, dos de ellas decimales, por lo que el campo puede definirse como

DECIMAL(4,2)

Esta definición incluye a los números negativos, de modo que el rango de cifras completo que abarca es desde -99’99 hasta 99’99.

Vamos a crear una sencilla tabla de ejemplo para almacenar pedidos en la que incluiremos el nombre de un artículo, la cantidad a pedir y el precio unitario (que acotaremos por debajo de los 1000 euros).

mysql> CREATE TABLE pedidos
    -> (
    -> articulo VARCHAR(25),
    -> cantidad INT,
    -> precio DEC(5,2)
    -> );
Query OK, 0 rows affected (0.06 sec)

Observa cómo he definido el campo precio: he puesto 5 porque es el total de cifras (las tres antes de la coma y las dos después de ella).

Repasemos su estructura:

mysql> DESC pedidos;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| articulo | varchar(25)  | YES  |     | NULL    |       |
| cantidad | int(11)      | YES  |     | NULL    |       |
| precio   | decimal(5,2) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Con todo lo que hemos visto ya, aunque nos faltan más tipos de campos aún, puedes hacer tus pinitos diseñando tablas. En breve estaremos introduciendo datos ya a esas estructuras vacías…

Javier Montero Gabarró


MySQL – Datos numéricos de coma fija


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


¡Accede al índice con todos los artículos sobre MySQL!

10 opiniones en “MySQL – Datos numéricos de coma fija”

  1. Muchisimas gracias estuve buscando esto por muchas partes. En el manual de MySQL mencionaban la forma (M, N) sin embargo no nos decian que era cada cosa. Gracias 🙂

  2. Mi problema al cargas valores decimales en MySql es que pongo como separador de decimales la coma. Entonces me da error por truncamiento. Sin embargo si antes de insertar hago un Replace de la coma por el punto se inserta el registro correctamente. Ahora bien lo que ando buscando es una función que haga lo mismo que con la fecha que poniendo delante del campo un “str_to_date(‘” & textBox.Text & “‘,’%d-%m-%Y’)

Deja un comentario