PostgreSQL에서 숫자 데이터 유형과 십진수 데이터 유형 구별
이 튜토리얼은 PostgreSQL 데이터베이스의 숫자 데이터 유형과 십진수 데이터 유형의 차이점에 대해 독자를 안내합니다.
PostgreSQL의 데이터 유형
PostgreSQL 데이터베이스에는 정수
, bigint
, 십진수
, 숫자
, 문자 가변
, 문자
, 텍스트
등 텍스트에서 숫자에 이르는 다양한 데이터 유형이 있습니다.
이러한 데이터 유형은 애플리케이션의 데이터를 저장하는 데 도움이 됩니다. 선택한 데이터 유형은 스토리지 요구 사항 및 전체 애플리케이션 성능에 따라 다릅니다. 예를 들어 bigint
데이터 유형은 integer
데이터 유형이 데이터의 저장 요구 사항을 충족하지 않을 때 사용됩니다.
사람의 나이와 같이 소수 부분이 없는 데이터로 작업할 때는 정수
와 같이 소수 부분이 없는 데이터 유형을 사용하는 것이 좋습니다. 제품 가격과 같이 소수 부분이 있는 데이터로 작업할 때 숫자
및 십진수
와 같이 소수 부분이 있는 데이터 유형을 사용하는 것이 좋습니다.
이 자습서에서는 NUMERIC
및 DECIMAL
데이터 유형을 사용하여 금전적 가치를 나타내는 방법을 배웁니다.
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
와 속성 productName
및 productPrice
를 사용하여 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
은 테이블이 생성되었음을 보여줍니다. productName
은 VARCHAR
유형이고 productPrice
는 NUMERIC
유형입니다.
productPrice
데이터 유형의 선언에서 6
및 4
인수를 전달했음에 유의하십시오. 매개변수는 각각 데이터의 정밀도와 스케일에 관한 정보를 제공합니다.
정밀도는 소수점 양쪽의 총 자릿수를 나타내고 스케일은 소수 부분의 자릿수를 나타냅니다. 돈으로 작업할 때 큰 분수 값이 필요한 규모로 강제되도록 규모를 정의하는 것이 중요합니다.
이를 확인하려면 다음 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
라는 기본 키와 productName
및 productPrice
속성이 있는 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에서 NUMERIC
및 DECIMAL
데이터 유형을 사용하는 방법을 배웠습니다. 우리는 그들이 금전적 가치로 작업할 때 중요한 가치를 강제하는 방법을 보았습니다.
이 예는 두 데이터 유형이 차이가 없으며 서로 교환하여 사용할 수 있음을 보여줍니다. 동일한 효과를 가지므로 독자는 NUMERIC
또는 DECIMAL
을 자유롭게 사용할 수 있습니다.
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