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

MySQL에서 DECIMAL 타입으로 소수점 숫자 저장하기 – 문법과 예제 완벽 정리

MySQL에서 소수점이 있는 숫자를 저장하려면 DECIMAL 데이터 타입의 두 가지 매개변수를 정확히 이해해야 합니다. 기본 문법은 다음과 같습니다.

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

DECIMAL 매개변수의 의미

예를 들어 DECIMAL(4,2)라고 선언하면 다음과 같은 규칙이 적용됩니다.

  • 첫 번째 매개변수(4): 소수점을 포함한 전체 자릿수가 최대 4자리입니다. 즉, 소수점 앞에는 최대 2자리까지만 저장할 수 있습니다.
  • 두 번째 매개변수(2): 소수점 아래는 최대 2자리까지만 저장됩니다.

유효한 값과 유효하지 않은 값

  • 케이스 1 – 12.34 → 유효합니다.
  • 케이스 2 – 123.4 → 유효하지 않습니다. (소수점 앞이 3자리라 범위 초과)
  • 케이스 3 – 1.234 → 유효합니다. 소수점 셋째 자리 값은 반올림되어 1.23으로 저장됩니다.

테이블 생성으로 직접 확인하기

실제 테이블을 만들어 동작을 확인해 보겠습니다.

mysql> create table DecimalDemo
-> (
-> Amount DECIMAL(4,2)
-> );
Query OK, 0 rows affected (0.47 sec)

범위를 벗어난 값 (저장 실패)

DECIMAL(4,2)의 허용 범위를 넘는 값을 입력하면 에러가 발생합니다.

mysql> insert into DecimalDemo values(123.4);
ERROR 1264 (22003): Out of range value for column 'Amount' at row 1

mysql> insert into DecimalDemo values(1234);
ERROR 1264 (22003): Out of range value for column 'Amount' at row 1

mysql> insert into DecimalDemo values(1234.56);
ERROR 1264 (22003): Out of range value for column 'Amount' at row 1

정상적으로 저장되는 값

반면 아래 값들은 범위 내에 있으므로 정상적으로 입력됩니다. 소수점 이하 자릿수가 초과된 값은 자동으로 반올림 처리되며 경고(warning)가 표시됩니다.

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

mysql> insert into DecimalDemo values(12.4);
Query OK, 1 row affected (0.18 sec)

mysql> insert into DecimalDemo values(.2345);
Query OK, 1 row affected, 1 warning (0.18 sec)

mysql> insert into DecimalDemo values(1.234);
Query OK, 1 row affected, 1 warning (0.16 sec)

저장된 데이터 조회하기

SELECT 문으로 테이블에 저장된 모든 값을 확인해 보겠습니다.

mysql> select *from DecimalDemo;

출력 결과

+--------+
| Amount |
+--------+
| 12.34 |
| 12.40 |
| 0.23 |
| 1.23 |
+--------+
4 rows in set (0.00 sec)

결과를 보면 12.4는 소수점 둘째 자리까지 표현하기 위해 12.40으로 저장되고, .2345와 1.234는 각각 0.23과 1.23으로 반올림되어 저장된 것을 확인할 수 있습니다. 이처럼 DECIMAL 타입은 금액, 요율 등 정확한 소수 계산이 필요한 데이터를 다룰 때 매우 유용합니다.