Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 통화(금액) 데이터 저장에 가장 적합한 데이터 유형은 무엇일까?

MySQL에서 통화 값에는 DECIMAL 데이터 유형이 가장 적합합니다

MySQL에서 금액과 같은 통화 값을 저장할 때 가장 적합한 데이터 유형은 DECIMAL입니다. FLOAT나 DOUBLE은 부동 소수점 방식의 특성상 미세한 정밀도 오차가 발생할 수 있지만, DECIMAL은 정확한 십진수 값을 보장하기 때문에 금융·결제 데이터를 다룰 때 필수적인 선택입니다.

DECIMAL 데이터 유형의 기본 문법은 다음과 같습니다.

DECIMAL(총 자릿수, 소수점 이하 자릿수);

예를 들어 DECIMAL(10,2)는 소수점을 포함해 총 10자리까지 저장할 수 있으며, 그중 소수점 아래 2자리를 표현합니다. 즉, 최대 99,999,999.99까지의 금액을 오차 없이 저장할 수 있습니다.

예제 테이블 생성하기

문법을 실제로 이해하기 위해 예제 테이블을 생성해 보겠습니다.

mysql> create table CurrenciesDemo
-> (
-> TotalPrice DECIMAL(10,2)
-> );
Query OK, 0 rows affected (1.82 sec)

데이터 삽입하기

INSERT 명령어를 사용해 여러 개의 레코드를 삽입합니다.

mysql> insert into CurrenciesDemo values(1647575.67);
Query OK, 1 row affected (0.19 sec)

mysql> insert into CurrenciesDemo values(1647575);
Query OK, 1 row affected (0.21 sec)

mysql> insert into CurrenciesDemo values(99599596);
Query OK, 1 row affected (0.13 sec)

mysql> insert into CurrenciesDemo values(1986.50);
Query OK, 1 row affected (0.23 sec)

mysql> insert into CurrenciesDemo values(99999999.90);
Query OK, 1 row affected (0.17 sec)

저장된 데이터 조회하기

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> select *from CurrenciesDemo;

실행 결과는 다음과 같습니다.

+-------------+
| TotalPrice |
+-------------+
| 1647575.67 |
| 1647575.00 |
| 99599596.00 |
| 1986.50 |
| 99999999.90 |
+-------------+
5 rows in set (0.00 sec)

소수점 이하 자릿수 없이 입력된 값도 자동으로 .00 형태로 채워져 일관된 형식으로 저장되는 것을 확인할 수 있습니다.

통화 기호를 붙여서 출력하기

CONCAT 함수를 활용하면 금액 앞에 달러($) 기호와 같은 통화 기호를 붙여 출력할 수 있습니다.

mysql> select concat('$',TotalPrice) as DollarSign from CurrenciesDemo;

실행 결과는 다음과 같습니다.

+--------------+
| DollarSign |
+--------------+
| $1647575.67 |
| $1647575.00 |
| $99599596.00 |
| $1986.50 |
| $99999999.90 |
+--------------+
5 rows in set (0.00 sec)

정리

통화 데이터를 다룰 때는 금액의 정확성이 무엇보다 중요합니다. MySQL에서는 DECIMAL 데이터 유형을 사용하면 부동 소수점 오차 없이 정확한 금액을 저장하고 조회할 수 있으며, 필요에 따라 CONCAT 함수로 통화 기호를 함께 표시해 사용자 친화적인 형태로 출력할 수 있습니다.