Log in

# Numeric data type

Numerical data are divided into exact and approximate, integer and real. Bit values are a separate category.

## Exact integers

Integers can be declared with the keyword UNSIGNED. In this case, the elements of this column it will not be possible to assign negative values, and the valid range, which takes on the type doubles. So, type TINYINT can take values from -128 to 127, and TINYINT UNSIGNED — from 0 to 255.

## Exact real numbers

Type DECIMAL stores exact real values data. It is used when accuracy is critical. For example, when storing financial data.

Usage example:

`salary DECIMAL(5,2)`

This example declares that the salary column will store numbers, having a maximum of 5 digits, 2 of which are reserved for decimal part. That is, this column will store values in the range from -999.99 to 999.99.

The syntax DECIMAL is equivalent toDECIMAL(M) and DECIMAL(M,0). By default, the parameter M is 10.

The whole part and the part after the point are stored as 2 separate integers. On Based on this fact, the amount of memory consumed can be easily calculated. So for DECIMAL(5,2) the integer part contains 3 digits and takes 2 byte, part after the point have 2 digits - 1 byte is enough. Total for storage will be spent 3 byte.

## Bit numbers

Type BIT(M)stores a sequence of bits a given length. By default, the length is 8 bit. If assigned the value in a column of this type uses less than M bit, then zeros are padded on the left. For example, when trying to write the value b'101' to BIT(6) will eventually be stored b'000101'.

## Approximate numbers

# Popular functions for working with numbers

GREATEST

LEAST

INTERVAL

BIT_COUNT

ABS

MOD

CEILING

FLOOR

ROUND

TRUNCATE

EXP

LOG

POW

SQRT

PI

RAND

SIGN