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을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
44강 SQL 초석 다지기 : PostgreSQL SERIAL (3) | 2022.12.23 |
---|---|
43강 SQL 초석 다지기 : PostgreSQL Integer Type (5) | 2022.12.23 |
41강 SQL 초석 다지기 : PostgreSQL Character Types: CHAR, VARCHAR, TEXT (3) | 2022.12.22 |
40강 SQL 초석 다지기 : PostgreSQL Boolean Data Type (3) | 2022.12.22 |
39강 SQL이 뭐지? PostgreSQL Upsert (3) | 2022.12.21 |
댓글