Loading...
MySQL 9.5 Reference Manual 9.5의 14.25.2 DECIMAL Data Type Characteristics의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 섹션에서는 DECIMAL 데이터 타입(및 그 동의어)의 특성을 다음 항목에 특히 중점을 두고 설명합니다:
자릿수의 최대 개수
저장 형식
저장 요구 사항
DECIMAL 컬럼 상한 범위에 대한 비표준 MySQL 확장
DECIMAL 컬럼의 선언 구문은 DECIMAL(M,D)입니다. 인수 값의 범위는 다음과 같습니다:
M 은 자릿수의 최대 개수(precision)입니다. 범위는 1에서 65까지입니다.
D 는 소수점 오른쪽 자릿수 개수(scale)입니다. 범위는 0에서 30까지이며 M 보다 클 수 없습니다.
D 를 생략하면 기본값은 0입니다.
M 을 생략하면 기본값은 10입니다.
M 의 최대값 65는 DECIMAL 값에 대한 계산이 최대 65자리까지 정확하다는 것을 의미합니다. 이 65자리 precision 한계는 정확한 값의 숫자 리터럴에도 적용되므로, 이러한 리터럴의 최대 범위는 이전과 달라집니다. (또한 DECIMAL 리터럴 텍스트 길이에도 제한이 있습니다. 이에 대해서는 Section 14.25.3, “Expression Handling”을 참조하십시오.)
DECIMAL 컬럼 값은 4바이트에 9개의 decimal digit을 패킹하는 이진 형식으로 저장됩니다. 각 값의 정수부와 소수부에 대한 저장 요구 사항은 개별적으로 결정됩니다. 9자리마다 4바이트가 필요하고, 남는 자릿수는 4바이트의 일부가 필요합니다. 남는 자릿수에 필요한 저장 공간은 다음 표와 같습니다.
| Leftover Digits | Number of Bytes |
|---|---|
| 0 | 0 |
| 1–2 | 1 |
| 3–4 | 2 |
| 5–6 | 3 |
| 7–9 | 4 |
예를 들어, DECIMAL(18,9) 컬럼은 소수점 양쪽에 각각 9자리의 digit을 가지므로, 정수부와 소수부 각각에 4바이트가 필요합니다.
DECIMAL(20,6) 컬럼은 14자리의 정수부 digit과 6자리의 소수부 digit을 가집니다. 정수부 digit은 9자리에는 4바이트, 나머지 5자리에는 3바이트가 필요합니다. 6자리의 소수부 digit에는 3바이트가 필요합니다.
DECIMAL 컬럼은 선행 + 문자나 - 문자 또는 선행 0 digit을 저장하지 않습니다.
DECIMAL(5,1) 컬럼에 +0003.1 을 삽입하면 3.1 로 저장됩니다. 음수의 경우, 리터럴 - 문자는 저장되지 않습니다.
DECIMAL 컬럼은 컬럼 정의에 의해 암시되는 범위를 초과하는 값을 허용하지 않습니다. 예를 들어, DECIMAL(3,0) 컬럼은 -999 에서 999 까지의 범위를 지원합니다.
DECIMAL(M,D) 컬럼은 소수점 왼쪽에 최대 M - D 자리까지 허용합니다.
SQL 표준은 NUMERIC(M,D) 의 precision이 정확히 M 자리여야 한다고 요구합니다.
DECIMAL(M,D) 에 대해서는 표준이 precision이 최소 M 자리 이상이지만 더 클 수도 있다고 요구합니다. MySQL에서는 DECIMAL(M,D) 와 NUMERIC(M,D) 가 동일하며, 둘 다 precision이 정확히 M 자리입니다.
DECIMAL 값의 내부 형식에 대한 전체 설명은 MySQL 소스 배포판의 strings/decimal.c 파일을 참조하십시오. 이 형식은 decimal2bin() 함수에서 예제와 함께 설명되어 있습니다.
14.25.1 Types of Numeric Values
14.25.3 Expression Handling