PostgreSQL에서 숫자 데이터 유형과 십진수 데이터 유형 구별

David Mbochi Njonge 2023년6월20일
  1. PostgreSQL의 데이터 유형
  2. PostgreSQL에 로그인
  3. PostgreSQL에서 NUMERIC 데이터 유형 사용
  4. PostgreSQL에서 DECIMAL 데이터 유형 사용
  5. 결론
PostgreSQL에서 숫자 데이터 유형과 십진수 데이터 유형 구별

이 튜토리얼은 PostgreSQL 데이터베이스의 숫자 데이터 유형과 십진수 데이터 유형의 차이점에 대해 독자를 안내합니다.

PostgreSQL의 데이터 유형

PostgreSQL 데이터베이스에는 정수, bigint, 십진수, 숫자, 문자 가변, 문자, 텍스트 등 텍스트에서 숫자에 이르는 다양한 데이터 유형이 있습니다.

이러한 데이터 유형은 애플리케이션의 데이터를 저장하는 데 도움이 됩니다. 선택한 데이터 유형은 스토리지 요구 사항 및 전체 애플리케이션 성능에 따라 다릅니다. 예를 들어 bigint 데이터 유형은 integer 데이터 유형이 데이터의 저장 요구 사항을 충족하지 않을 때 사용됩니다.

사람의 나이와 같이 소수 부분이 없는 데이터로 작업할 때는 정수와 같이 소수 부분이 없는 데이터 유형을 사용하는 것이 좋습니다. 제품 가격과 같이 소수 부분이 있는 데이터로 작업할 때 숫자십진수와 같이 소수 부분이 있는 데이터 유형을 사용하는 것이 좋습니다.

이 자습서에서는 NUMERICDECIMAL 데이터 유형을 사용하여 금전적 가치를 나타내는 방법을 배웁니다.

PostgreSQL에 로그인

PostgreSQL 데이터베이스에 로그인하려면 새 터미널 창을 열고 다음 명령을 사용하여 로컬 PostgreSQL 서버에 로그인합니다.

david@david-HP-ProBook-6470b:~$ psql -U 

키보드의 엔터 버튼을 누르고 비밀번호를 요구하면 데이터베이스 설치 시 생성한 비밀번호를 입력하고 다시 엔터를 누릅니다. 암호가 맞으면 아래와 같이 터미널 창을 postgres 데이터베이스에 연결해야 합니다.

david@david-HP-ProBook-6470b:~$ psql -U postgres
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))
Type "help" for help.

postgres=# 

PostgreSQL에서 NUMERIC 데이터 유형 사용

이 두 숫자 유형이 어떻게 다른지 이해하기 위해 각 예제에 대해 별도의 데이터베이스를 사용할 것입니다. 다음 SQL 명령을 사용하여 numeric_db라는 데이터베이스를 생성합니다.

numeric_vs_decimal=# create database numeric_db;
CREATE DATABASE

CREATE DATABASE는 데이터베이스가 성공적으로 생성되었음을 보여줍니다. 다음 명령만 사용하여 데이터베이스에 연결하면 됩니다.

numeric_vs_decimal=# \c numeric_db;
You are now connected to database "numeric_db" as user "postgres".
numeric_db=#

이제 터미널 창은 위의 코드와 같이 numeric_db에 연결되어야 합니다.

다음 SQL 명령을 복사하여 터미널에 붙여넣어 기본 키 id와 속성 productNameproductPrice를 사용하여 product라는 테이블을 생성합니다.

numeric_db=# create table product(
numeric_db(# id SERIAL NOT NULL UNIQUE,
numeric_db(# productName VARCHAR(100),
numeric_db(# productPrice NUMERIC(6,4));
CREATE TABLE

CREATE TABLE은 테이블이 생성되었음을 보여줍니다. productNameVARCHAR 유형이고 productPriceNUMERIC 유형입니다.

productPrice 데이터 유형의 선언에서 64 인수를 전달했음에 유의하십시오. 매개변수는 각각 데이터의 정밀도와 스케일에 관한 정보를 제공합니다.

정밀도는 소수점 양쪽의 총 자릿수를 나타내고 스케일은 소수 부분의 자릿수를 나타냅니다. 돈으로 작업할 때 큰 분수 값이 필요한 규모로 강제되도록 규모를 정의하는 것이 중요합니다.

이를 확인하려면 다음 SQL 명령을 사용하여 일부 값을 product 테이블에 삽입하십시오.

numeric_db=# insert into product(productName,productPrice)
numeric_db-# values ('Iphone 13 Pro',25.48678),
numeric_db-# ('Samsung galaxy a53',15.5476);
INSERT 0 2

INSERT는 값이 성공적으로 삽입되었음을 나타냅니다. 두 숫자 데이터 유형 중 첫 번째 유형의 정밀도는 7이며 이는 6의 정밀도를 위반합니다.

4의 배율을 지정했으므로 값은 우리가 설정한 정확한 배율로 강제 적용됩니다. 다음 SQL 명령을 사용하여 테이블에 삽입된 값을 확인하십시오.

numeric_db=# select * from product;
 id |    productname     | productprice 
----+--------------------+--------------
  1 | Iphone 13 Pro      |      25.4868
  2 | Samsung galaxy a53 |      15.5476
(2 rows)

PostgreSQL에서 DECIMAL 데이터 유형 사용

이 예에서는 decimal_db라는 데이터베이스를 사용합니다. 이전 예제에서 사용한 명령을 사용하여 이 데이터베이스를 생성합니다.

데이터베이스를 생성한 후 데이터베이스에 연결하고 다음 SQL 명령을 사용하여 id라는 기본 키와 productNameproductPrice 속성이 있는 product라는 테이블을 생성합니다.

decimal_db=# create table product(
decimal_db(# id SERIAL NOT NULL UNIQUE,
decimal_db(# productName VARCHAR(100),
decimal_db(# productPrice DECIMAL(6,4));
CREATE TABLE

이 테이블은 이전 예제의 테이블과 유사합니다. 변경 사항은 productPrice 데이터 유형을 NUMERIC에서 DECIMAL로 변환하는 것뿐입니다.

다음 SQL 명령을 사용하여 일부 값을 제품 테이블에 삽입하십시오. 이전 예에서 볼 수 있듯이 스케일은 값이 지정한 정확한 스케일로 강제 변환되도록 합니다.

decimal_db=# INSERT INTO product(productName, productPrice)
decimal_db-# VALUES ('IPhone 13 Pro',25.48678),
decimal_db-# ('Samsung galaxy a53',14.5476);
INSERT 0 2

INSERT문은 이전 예의 것과 동일하며 변경되지 않았습니다. INSERT 문이 예상대로 작동하는지 확인하려면 다음 SQL 명령을 사용하여 테이블에 삽입된 값을 봅니다.

decimal_db=# select * from product;
 id |    productname     | productprice 
----+--------------------+--------------
  1 | IPhone 13 Pro      |      25.4868
  2 | Samsung galaxy a53 |      14.5476
(2 rows)

결론

이 튜토리얼에서는 PostgreSQL에서 NUMERICDECIMAL 데이터 유형을 사용하는 방법을 배웠습니다. 우리는 그들이 금전적 가치로 작업할 때 중요한 가치를 강제하는 방법을 보았습니다.

이 예는 두 데이터 유형이 차이가 없으며 서로 교환하여 사용할 수 있음을 보여줍니다. 동일한 효과를 가지므로 독자는 NUMERIC 또는 DECIMAL을 자유롭게 사용할 수 있습니다.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub