ORACLE 숫자 데이터 유형에는 NUMBER, FLOAT, BINARY_FLOAT, BINARY_DOUBLE이 있습니다. FLOAT의 경우 정밀도의 범위가 이진수 길이로 측정되기 때문에 저장되는 데이터에 따라 데이터 정합성이 보장되지 않는 경우도 있습니다. 일반적으로 숫자 데이터 유형은 NUMBER로 대부분 사용합니다.
NUMBER(p, s)
NUMBER 데이터 유형은 저장된 값에 따라 자동 저장되는 가변적인 크기를 가지며 최대 38자리까지 입력 가능한 숫자 데이터 유형입니다. 필요한 만큼의 공간을 사용하며 p는 Precise(정밀도)의 약자로 전체 자릿수 의미하는 정수입니다. s는 Scale(스케일)의 약자로 소수점 이하 자릿수를 나타내는 정수입니다. NUMBER 데이터 유형이 지원하는 숫자의 범위는 부호가 있는 정수의 경우 -10^38+1부터 10^38-1까지이고 부호가 없는 정수는 0부터 2*10^38-1까지입니다. 부동소수점의 경우 약 -10^125부터 10^125까지의 범위를 지원합니다. 부동소수점의 범위는 지구에서 알려진 모든 물질의 양보다도 많은 숫자라고 합니다. 이렇듯 매우 크고 작은 숫자까지 처리할 수 있으나 정확도가 한정이 되어 있고 정확도를 보장하기 위해서는 적절하게 반올림을 하거나 라운딩 방식을 사용하여야 합니다.
-- 테이블 생성
CREATE TABLE USER (
VAL1 NUMBER,
VAL2 NUMBER(10),
VAL3 NUMBER(*, 3),
VAL4 NUMBER(5, 3),
VAL5 NUMBER(5, -2)
);
-- VAL1 : P(정밀도)와 스케일이 생략되어 NUMBER타입범위 내에 모든 경우의 수가 저장될 수 있습니다.
INSERT INTO USER(VAL1) VALUES(10); -- 10
INSERT INTO USER(VAL1) VALUES(10.999999); -- 10.999999
INSERT INTO USER(VAL1) VALUES(-2000); -- -2000
-- VAL2 : P(정밀도)만 지정이 되어 있으므로 소수형 타입의 숫자는 반올림해서 저장됩니다.
INSERT INTO USER(VAL2) VALUES(10.11); -- 10
INSERT INTO USER(VAL2) VALUES(10.71); -- 11
-- VAL3 : P(정밀도)에 '*'를 사용하는 경우 38자리 이내에서 자동할당됩니다.
INSERT INTO USER(VAL3) VALUES(123456789123456789.22); -- 123456789123456789.22
-- VAL4 : P(정밀도)와 S(스케일)을 포함해 최대 8자리 숫자까지 저장이 가능합니다.
-- P(정밀도)는 최대 유효 자리수를 나타내며 P(정밀도)보다 큰 숫자값을 입력시에 오류가 발생합니다.
INSERT INTO USER(VAL4) VALUES(12345.123); -- 12345.123
INSERT INTO USER(VAL4) VALUES(123456.123); -- 오류 발생
-- VAL5 : -2는 소수점 왼쪽에 있는 자릿수 중에서 오른쪽으로 2자리를 뺀 자릿수를 나타냅니다.
INSERT INTO USER(VAL4) VALUES(123.12); -- 100
INSERT INTO USER(VAL4) VALUES(12345.123); -- 12300
INSERT INTO USER(VAL4) VALUES(12.123); -- 0
FLOAT(p)
NUMBER의 최하위 타입입니다. p는 Precise(정밀도)를 나타내며 1~128까지입니다. 디폴트는 최댓값 128입니다.
-- FLOAT 데이터 타입을 사용하는 방법 입니다.
CREATE TABLE USER (
VAL1 FLOAT,
VAR2 FLOAT(20),
VAR3 (10)
);
BINARY_FLOAT
32비트 부동 소수점 숫자를 저장하는 데 사용되는 데이터 유형입니다. 정확도는 소수점 아래 24자리까지 지원하며 IEEE754 규격을 따릅니다. BINARY_DOUBLE보다 작은 범위의 숫자를 저장하지만 저장공간을 더 작게 차지합니다.
-- BINARY_FLOAT 데이터 타입을 사용하는 방법 입니다.
CREATE TABLE USER (
VAL1 BINARY_FLOAT,
VAR2 NUMBER,
VAR3 (10)
);
BINARY_DOUBLE
64비트 부동 소수점 숫자를 저장하는 데 사용되는 데이터 유형입니다.정확도는 소수점 아래 53자리까지 지원하며 BINARY_FLOAT과 동일하게 IEEE754 규격을 따릅니다. BINARY_FLOAT보다 큰 숫자를 저장하지만 저장공간은 더 많이 차지하게 됩니다.
-- BINARY_DOUBLE 데이터 타입을 사용하는 방법 입니다.
CREATE TABLE USER (
VAL1 BINARY_DOUBLE,
VAR2 NUMBER,
VAR3 (10)
);
지금까지 ORACLE DATABASE에서 사용되는 숫자 데이터 유형을 살펴보았습니다.
정보가 도움이 되셨길 바랍니다
'IT정보' 카테고리의 다른 글
SQL 기본 문법 (0) | 2023.04.20 |
---|---|
ORACLE LOB 데이터 유형 (0) | 2023.04.19 |
ORACLE 날짜 및 시간 데이터 유형 (0) | 2023.04.18 |
ORACLE 문자 데이터 유형 (0) | 2023.04.16 |
데이터베이스란? (1) | 2023.04.15 |
댓글