MySQL에서 숫자를 10진수로 저장하려면?
MySQL에서는 숫자를 별도로 형식화(formatting)할 필요가 없습니다. 대신 DECIMAL 데이터 타입을 사용하면 원하는 자릿수의 10진수 값을 정확하게 저장할 수 있습니다.
DECIMAL(10,2)는 전체 10자리 숫자 중 소수점 이하 2자리를 의미합니다. 이 경우 소수점 셋째 자리부터는 자동으로 반올림되어 저장됩니다.
1. 테이블 생성하기
먼저 DECIMAL 타입의 컬럼을 가진 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1330
-> (
-> Amount DECIMAL(10,2)
-> );
Query OK, 0 rows affected (0.85 sec)
2. 데이터 삽입하기
INSERT 명령어를 사용하여 테이블에 여러 개의 레코드를 삽입합니다.
mysql> insert into DemoTable1330 values(10944.7893);
Query OK, 1 row affected, 1 warning (0.13 sec)
mysql> insert into DemoTable1330 values(9848.44);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1330 values(8009.90);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1330 values(1000.99);
Query OK, 1 row affected (0.13 sec)
위 예시에서 첫 번째 값인 10944.7893은 소수점 이하가 4자리이므로 경고(warning)가 발생하며, 자동으로 반올림되어 저장됩니다.
3. 저장된 데이터 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select * from DemoTable1330;
실행 결과는 다음과 같습니다.
+----------+
| Amount |
+----------+
| 10944.79 |
| 9848.44 |
| 8009.90 |
| 1000.99 |
+----------+
4 rows in set (0.00 sec)
정리
출력 결과에서 확인할 수 있듯이, 10944.7893은 DECIMAL(10,2) 규칙에 따라 소수점 둘째 자리까지 반올림되어 10944.79로 저장되었습니다. 이처럼 MySQL에서는 DECIMAL 데이터 타입만 지정하면 별도의 형식화 작업 없이도 일관된 10진수 형식으로 데이터를 관리할 수 있습니다. 금액처럼 정확한 소수점 계산이 필요한 데이터에는 FLOAT나 DOUBLE보다 DECIMAL을 사용하는 것이 권장됩니다.