본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

42강 SQL 초석 다지기 : PostgreSQL NUMERIC Type

by DoitSQL 2022. 12. 22.
728x90

42강 SQL 초석 다지기 : PostgreSQL NUMERIC Type   

PostgreSQL

SQL 초석 다지기 42강 시작합니다.

 

본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/

 

이번 시간에는

 PostgreSQL NUMERIC Data Type

에 대해서 알아보는 시간입니다.

 

이번 강의에서는 숫자 데이터를 저장하기 위한 PostgreSQL NUMERIC 유형에 대해 알아봅니다.


 

Introduction to PostgreSQL NUMERIC data type   

NUMERIC type은 숫자가 큰 숫자를 저장할 수 있습니다. 일반적으로 금액 또는 수량과 같이 정확성이 필요한 숫자에는 NUMERIC type을 사용합니다.

다음은 NUMERIC type의 구문을 보여줍니다.

NUMERIC(precision, scale)   

 

위 구문에서 precision은 총 자릿수이고 scale는 소수 부분의 자릿수입니다. 예를 들어 숫자 1234.567의 정밀도는 7이고 척도는 3입니다.

NUMERIC type은 소수점자리 16,383자리, 앞 숫자자리 131,072자리까지 값을 유지할 수 있습니다.

숫자 유형의 scale는 0 또는 양수일 수 있습니다. 다음은 scale이 0인 숫자 유형의 구문을 보여줍니다.

NUMERIC(precision)   

 

정밀도와 척도를 모두 생략하면 모든 정밀도를 저장하고 위에서 언급한 정밀도와 척도의 한계까지 척도를 올릴 수 있습니다. (소수점자리 16,383자리, 앞 숫자자리 131,072자리)

NUMERIC   

 

PostgreSQL에서  NUMERIC과 DECIMAL 은 동일하며 둘 다 SQL 표준의 일부입니다.

정밀도가 필요하지 않은 경우에는 일반적으로 NUMERIC 값에 대한 계산이 integers, floats 및 double precisions보다 느리기 때문에 NUMERIC type을 사용하면 안 됩니다.


PostgreSQL NUMERIC examples   

PostgreSQL NUMERIC type을 사용하는 예를 들어 보겠습니다.

 

척도보다 큰 숫자 값 저장할때 - 반올림  

척도가 NUMERIC 열의 선언된 척도보다 큰 값을 저장하는 경우 PostgreSQL은 값을 지정된 소수 자릿수로 반올림합니다

 

다음 예를 참조하십시오. (커밋은 이제 알아서 할 수있죠.)

먼저 데모에 사용할 products라는 새 테이블을 만듭니다.

DROP TABLE IF EXISTS products;

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price NUMERIC(
        5,
        2
    )
);   

 

둘째, 가격 열에 명시된 규모를 초과하는 가격을 가진 일부 제품을 삽입합니다.

INSERT
    INTO
    products (
        name,
        price
    )
VALUES (
    'Phone',
    500.215
), 
       (
    'Tablet',
    500.214
);   

가격 열의 척도가 2이므로 PostgreSQL은 값 500.215를 500.22로 반올림하고 값 500.214를 500.21로 반내림합니다.

다음 쿼리는 제품 테이블의 모든 행을 반환합니다.

SELECT * FROM products;   

 

선언된 정밀도를 초과하는 값을 저장하는 경우,  PostgreSQL은 다음 예와 같이 오류가 발생합니다.

INSERT
    INTO
    products (
        name,
        price
    )
VALUES(
    'Phone',
    123456.21
);   

 


PostgreSQL NUMERIC type and NaN   

숫자 값을 보유하는 것 외에도 NUMERIC 유형은 not-a-number를 나타내는 NaN이라는 특수 값도 보유할 수 있습니다.

다음 예제에서는 제품 ID 1의 가격을 NaN으로 업데이트합니다.

UPDATE
    products
SET
    price = 'NaN'
WHERE
    id = 1;   

위의 UPDATE 문에 표시된 것처럼 NaN을 담으려면 작은 따옴표를 사용해야 합니다.

다음 쿼리는 제품 테이블의 데이터를 반환합니다.

SELECT * FROM products;   

일반적으로 NaN은 자신을 포함한 어떤 숫자와도 같지 않다. 

이것은 NaN = NaN이라는 표현이 false를 반환한다는 것을 의미합니다.

그러나 두 개의 NaN 값은 같고 NaN은 다른 숫자보다 큽니다. 

이 구현을 통해 PostgreSQL은 NUMERIC 값을 정렬하고 트리 기반 인덱스에 사용할 수 있습니다.


다음 쿼리는 가격을 기준으로 제품을 정렬합니다.

SELECT
    *
FROM
    products
ORDER BY
    price DESC;   

출력에서 알 수 있듯이 NaN은 500.21보다 큽니다.


본 강의에서는 PostgreSQL NUMERIC 데이터 유형과 NUMERIC 열을 사용하여 숫자를 저장하는 방법에 대해 배웠습니다.

 

수고하셨습니다.


Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글