1. NUMBER
- 형식: NUMBER(P, S)
- P (정밀도, Precision): 전체 유효 자릿수를 나타내며, 1부터 38까지의 정수를 사용할 수 있습니다. 소수점 앞과 뒤를 포함한 전체 자릿수.
- S (스케일, Scale): 소수점 이하 자릿수를 나타내며, -84부터 127까지의 정수를 사용할 수 있다. 기본값은 0
- 저장 방식: 가변 길이 형식이므로, 저장되는 바이트 수는 숫자의 크기에 따라 달라진다.
2. FLOAT
- 설명:
- NUMBER 데이터 유형의 하위 유형이며, 이진수 길이로 정밀도를 표현.
- 데이터 정합성이 보장되지 않을 수 있다.
- 사용 형식:
- FLOAT(p) p는 정밀도.
- 예시:
- FLOAT(126)
3. BINARY_FLOAT
- 설명:
- 32비트 부동 소수점 숫자 데이터 유형.
- 4바이트의 저장 공간을 사용.
- 사용 형식:
- BINARY_FLOAT
- 예시:
- BINARY_FLOAT
4. BINARY_DOUBLE
- 설명:
- 64비트 부동 소수점 숫자 데이터 유형.
- 8바이트의 저장 공간을 사용.
- 사용 형식:
- BINARY_DOUBLE
- 예시:
- BINARY_DOUBLE
5. 정밀도(P) 및 스케일(S) 상세 설명
- 정밀도(P)
- 숫자의 전체 자릿수를 의미하며, 소수점 앞과 뒤의 모든 자릿수를 포함.
- 오라클에서 정밀도는 1부터 38까지의 값을 가질 수 있으며, 이는 숫자의 유효 자릿수를 나타낸다.
- 스케일(S)
- 소수점 이하의 자릿수를 나타낸다.
- 스케일은 음수 값을 가질 수도 있는데, 이 경우 소수점 왼쪽에서 반올림이 발생.
- 예를 들어, NUMBER(5, -2)는 소수점 왼쪽 두 번째 자리에서 반올림을 수행.
6. 저장 방식 및 반올림 규칙
- 데이터 삽입 또는 업데이트 시, 지정된 정밀도와 스케일을 초과하는 경우 오라클은 다음과 같이 처리.
- 정밀도 초과: 오류가 발생.
- 스케일 초과: 반올림이 수행.
- 반올림은 가까운 값으로 수행되며, 필요한 경우 올림 또는 내림이 발생.
7. 특수한 경우 및 추가 정보
- NUMBER(*, S): 정밀도는 시스템이 결정하고 스케일만 지정.
- NUMBER만 선언할 경우: 최대 정밀도(38)를 사용.
- NUMBER 자료형은 정수와 실수를 모두 저장할 수 있다.
- 스케일(S)은 음수 값을 가질 수 있으며, 이 경우 소수점 왼쪽에서 반올림이 발생.
8. 예시
- NUMBER(6): 6자리 정수를 저장.
- NUMBER(8, 2): 전체 8자리, 소수점 이하 2자리를 저장.
- NUMBER(5, 2): 123.45 (정상), 1234.56 (오류), 123.456 (123.46으로 반올림)
- NUMBER(5, -2): 12345 (12300으로 저장), 12399 (12400으로 저장)
- NUMBER(3, 4): 0.04567 (0.0457으로 저장), 0.004567 (0.0046으로 저장)
9. 주의사항
- 정밀도(P)는 스케일(S)보다 크거나 같아야 한다.
- 저장하려는 데이터의 전체 자릿수가 정밀도(P)를 초과하면 오류가 발생.
- 데이터 삽입시 정밀도와 스케일에 맞지않는 데이터가 삽입될 경우 에러가 발생하거나 반올림 되어 저장될 수 있다.
'개발 > SQL' 카테고리의 다른 글
Oracle 데이터 타입 - 이진데이터 (0) | 2025.02.21 |
---|---|
Oracle 데이터 타입 - 날짜 (0) | 2025.02.21 |
Oracle 데이터 타입 - 문자열 (0) | 2025.02.21 |
Oracle 11g XE scott계정 생성하기 (0) | 2025.02.21 |
Oracle 권한 및 롤 (0) | 2025.02.21 |