SQL DECIMAL 데이터 형식 이해
Daniel Hayes
Full-Stack Engineer · Leapcell

Key Takeaways
- SQL DECIMAL은 정의된 정밀도와 스케일로 정확한 숫자 값을 저장합니다.
- DECIMAL은 반올림 오류를 방지하기 위해 금융 데이터에 선호됩니다.
- 적절한 정밀도 및 스케일 선택은 데이터 정확성과 무결성을 보장합니다.
SQL에서 DECIMAL
데이터 유형은 특히 정밀도가 중요한 경우 정확한 숫자 값을 저장하는 데 중요합니다. 이는 반올림 오류가 중요한 불일치로 이어질 수 있는 금융, 과학적 측정 및 재고 관리와 같은 영역에서 특히 그렇습니다.
DECIMAL 데이터 유형이란 무엇입니까?
DECIMAL
(또는 NUMERIC
) 데이터 유형은 사용자 정의 정밀도와 스케일로 고정 소수점 숫자를 나타냅니다. 이러한 두 매개변수는 전체 자릿수와 소수점 뒤의 자릿수를 각각 결정합니다.
- 정밀도 (p): 소수점의 왼쪽과 오른쪽에 저장할 수 있는 총 자릿수입니다.
- 스케일 (s): 소수점 오른쪽에 저장할 수 있는 자릿수입니다.
예를 들어 DECIMAL(6,2)
는 소수점 앞 4자리, 소수점 뒤 2자리를 수용하여 최대 9999.99까지의 숫자를 허용합니다.
구문 및 저장
DECIMAL
열을 정의하기 위한 일반적인 구문은 다음과 같습니다.
DECIMAL(p, s)
p
: 정밀도, SQL Server에서는 1에서 38까지, MySQL에서는 최대 65까지입니다.s
: 스케일,p
보다 작거나 같아야 합니다.
저장 요구 사항은 정밀도에 따라 다릅니다.
정밀도 범위 | 저장 (바이트) |
---|---|
1–9 | 5 |
10–19 | 9 |
20–28 | 13 |
29–38 | 17 |
참고: 이러한 저장 크기는 SQL Server에만 해당되며 다른 데이터베이스 시스템에서는 다를 수 있습니다.
실제 예제
DECIMAL 열이 있는 테이블 만들기:
CREATE TABLE Transactions ( TransactionID INT PRIMARY KEY, Amount DECIMAL(10, 2) NOT NULL );
이 예제에서 Amount
열은 금융 거래에 적합한 최대 99999999.99 값을 저장할 수 있습니다.
데이터 삽입:
INSERT INTO Transactions (TransactionID, Amount) VALUES (1, 12345.67);
오버플로 처리:
정의된 정밀도를 초과하는 값을 삽입하려고 하면 오류가 발생합니다.
-- Amount가 DECIMAL(5,2)로 정의된 경우 오류가 발생합니다. INSERT INTO Transactions (TransactionID, Amount) VALUES (2, 123456.78);
이를 해결하려면 정밀도를 조정하십시오.
ALTER TABLE Transactions MODIFY Amount DECIMAL(7, 2);
DECIMAL vs. FLOAT/DOUBLE
DECIMAL
은 정확한 정밀도를 제공하지만 FLOAT
및 DOUBLE
은 근사 데이터 유형입니다. 사소한 정밀도 손실이 허용되는 과학적 계산에 적합합니다. 그러나 금융 데이터의 경우 반올림 오류를 방지하기 위해 DECIMAL
을 사용하는 것이 좋습니다.
모범 사례
- 금융 데이터에
DECIMAL
사용: 통화 계산의 정확성을 보장합니다. - 적절한 정밀도 및 스케일 정의: 예상 값을 수용하기에 충분한 자릿수를 할당합니다.
- 저장 영향에 유의: 정밀도가 높을수록 더 많은 저장 공간이 필요합니다.
- 입력 데이터 유효성 검사: 삽입된 값이 정의된 정밀도 및 스케일을 초과하지 않아 오류를 방지하는지 확인합니다.
결론
DECIMAL
데이터 유형은 높은 정밀도와 정확한 숫자 표현이 필요한 시나리오에 필수적입니다. 정밀도와 스케일을 이해하고 적절하게 적용함으로써 개발자는 SQL 데이터베이스에서 데이터 무결성과 정확성을 보장할 수 있습니다.
FAQs
반올림 오류를 방지하기 위해 금융 또는 정확한 숫자 데이터에 DECIMAL을 사용합니다.
데이터베이스에서 오류를 반환합니다. 더 큰 값이 필요한 경우 정밀도 또는 스케일을 조정합니다.
정밀도가 높을수록 저장 크기가 늘어납니다. 필요에 맞는 값을 선택하십시오.
Leapcell은 백엔드 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무제한 프로젝트를 무료로 배포
- 사용량에 대해서만 비용을 지불하십시오. 요청도 없고 요금도 없습니다.
탁월한 비용 효율성
- 유휴 요금 없이 사용한 만큼 지불하십시오.
- 예: $25는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 간편한 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
간편한 확장성 및 고성능
- 높은 동시성을 쉽게 처리하기 위한 자동 확장.
- 운영 오버헤드가 없어 구축에만 집중할 수 있습니다.
설명서에서 자세히 알아보십시오!
X에서 팔로우하십시오: @LeapcellHQ