Home MySQL Money Data Type
Post
Cancel

MySQL Money Data Type

MySQL Money Data Type

MySQL에 돈과 관련된 데이터를 저장할때 어떤 자료형이 적절할까?

돈과 관련된 데이터를 저장할때는 정확한 값을 저장해야 한다는 요구사항이 있다.

소수점과 관련된 데이터는 그 중요성이 더 부각되는데, 부동소수점의 원리상 손실되는 데이터가 있기 때문이다.

따라서 소수점 데이터를 다룰떄는 주의해서 데이터 타입을 선택해야 한다.

INT

4Byte

-2147483648 ~ 2147483647까지의 숫자를 나타낼 때 사용한다.

BIGINT

8Byte

큰 숫자를 나타낼 떄 사용한다. (900경)

소수점을 나타낼때 사용할 수 있는데, 소수점 아래 2자리를 가지고 있다면 100을 곱하여 저장하고 읽어올때 100을 나눠서 소수점 아래 숫자를 나타낸다.

정확한 소수점 자리수를 저장할 수 있지만, 추가적인 연산 처리를 해줘야 한다는 단점이 있다.

Float, Double

Float : 4Byte, Double : 8Byte

부동소수점 방식으로 소수점을 나타낼 때 사용한다.

부동소수점 방식이므로 근사치를 저장한다.

따라서 돈과 관련된 데이터를 저장하기에는 적합하지 않다.

DECIMAL

DECIMAL은 고정 소수점 방식을 사용한다.

DECIMAL(P, D) 형식으로 사용하게 된다.

1
2
3
P : 정수, 소수부를 포함한 총 자릿수 (1 ~ 65)

D : 소수점 자릿수 (0 ~ 30)

DECIMAL은 가변 형태의 데이터이다.

정확한 데이터 크기를 알고 싶을때는 계산이 필요하다.

이떄 정수부, 소수부로 나눠서 계산을 하게 된다.

예를 들어 DECIMAL(18, 9)는 각각 정수부 소수부가 각각 9자리씩 사용하므로 4byte + 4byte = 8byte를 사용한다.

DECIMAL(16, 2)의 경우 정수부 14자리, 소수부 2자리를 사용한다.

정수부: 9자리 (4byte) + 5자리(3byte) -> 7byte

소수부: 2자리 (1byte)

총 8byte를 사용한다.

각 자릿수가 몇 바이트를 사용하는지 표

Leftover DigitsNumber of Bytes
00
1–21
3–42
5–63
7–94
This post is licensed under CC BY 4.0 by the author.

-

MySQL Time Data Type