Udemy - The Ultimate MySQL Bootcamp: Go from SQL Beginner to Expert를 수강하며 정리하는 글
DECIMAL(M, D)에서 M에 해당하는 5의 경우 총 5자리의 숫자를 사용할 수 있다는 의미이고, D에 해당하는 2는 소수점을 2자리까지 지정하겠다라는 의미이다. 그렇다면 정수의 타입은 M-D(5-2)까지 저장할 수 있다는 것을 유추할 수 있다. 그렇게 DECIMAL(5,2) 데이터 타입의 범위는 -999.99 ~ 999.99이다.
https://blog.martinwork.co.kr/mysql/2020/01/17/mysql-data-type.html 도 참조
mysql> INSERT INTO items(price) VALUES(7);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO items(price) VALUES(10);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO items(price) VALUES(100);
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO items(price) VALUES(1000);
ERROR 1264 (22003): Out of range value for column 'price' at row 1
1000은 1000.00으로 총 6자리이다. 그래서 들어가지 않는다.
mysql> INSERT INTO items(price) VALUES(999.99);
Query OK, 1 row affected (0.00 sec)
999.99까지는 들어간다.
mysql> INSERT INTO items(price) VALUES(999.999);
ERROR 1264 (22003): Out of range value for column 'price' at row 1
하지만 이렇게 999.999는 들어가지 않는다.
mysql> SELECT * FROM items;
+--------+
| price |
+--------+
| 7.00 |
| 10.00 |
| 100.00 |
| 999.99 |
+--------+
4 rows in set (0.00 sec)