DB/API Document

[DB/Postgres] PostgreSQL 데이터 타입의 종류 이해하기

adjh54 2023. 12. 21. 10:59
728x170
해당 글에서는 PostgreSQL에서 사용하는 데이터 타입의 종류에 대해 이해를 돕기 위해 작성한 글입니다.


 

1) 데이터 타입


💡 데이터 타입

- 데이터베이스에서 사용되는 데이터의 형식을 정의하는 방법입니다.

- 일반적으로 테이블 데이터 타입은 데이터베이스 시스템에서 제공하는 기본 데이터 타입을 기반으로 정의됩니다. 각 열에 대해 테이블에 정의된 데이터 타입은 해당 열에 저장되는 데이터의 유형과 구조를 결정합니다.

 

 

1. 데이터 타입 요약


💡 데이터 타입 요약

- PostgreSQL의 데이터 타입은 PostgreSQL 튜토리얼에 나온 내용을 기반으로 진위형, 문자, 숫자(정수, 자동증가 정수, 부동 소수점 숫자), 시간, 배열, json, 기하학, 네트워크 형태로 구분 지었습니다.
데이터 타입 분류 설명
BOOL, BOOLEAN 진위형 참(True) 또는 거짓(False) 값을 나타내는 데이터 타입입니다.
     
CHAR(n) 문자 고정 길이의 문자열을 나타내는 데이터 타입입니다. 문자열의 최대 길이는 n입니다.
VARCHAR(n) 문자 가변 길이의 문자열을 나타내는 데이터 타입입니다. 문자열의 최대 길이는 n입니다.
TEXT 문자 가변 길이의 긴 문자열을 나타내는 데이터 타입입니다.
     
SMALLINT 숫자 : 정수 16비트 정수 값을 나타내는 데이터 타입입니다.
INTEGER(=INT) 숫자 : 정수 32비트 정수 값을 나타내는 데이터 타입입니다.
BIGINT 숫자 : 정수 64비트 정수 값을 나타내는 데이터 타입입니다.
SMALLSERIAL 숫자 : 자동 증가 정수 16비트 정수 값의 자동 생성 열을 나타내는 데이터 타입입니다.
SERIAL 숫자 : 자동 증가 정수 32비트 정수 값의 자동 생성 열을 나타내는 데이터 타입입니다.
BIGSERIAL 숫자 : 자동 증가 정수 64비트 정수 값의 자동 생성 열을 나타내는 데이터 타입입니다.
     
REAL 숫자 : 부동 소수점 숫자 32비트 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
FLOAT(n) 숫자 : 부동 소수점 숫자 정밀도가 n인 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
FLOAT8 숫자 : 부동 소수점 숫자 64비트 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
DOUBLE PRECISION 숫자 : 부동 소수점 숫자 64비트 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
NUMERIC(p, s) 숫자 : 부동 소수점 숫자 고정된 소수점 숫자 값을 나타내는 데이터 타입입니다. 전체 자릿수는 p이고, 소수 자릿수는 s입니다.
     
DATE 날짜/시간 연도, 월, 일을 나타내는 데이터 타입입니다.
TIME 날짜/시간 시간(시, 분, 초)을 나타내는 데이터 타입입니다.
TIMESTAMP 날짜/시간 연도, 월, 일, 시간(시, 분, 초)을 나타내는 데이터 타입입니다.
TIMESTAMPTZ 날짜/시간 연도, 월, 일, 시간(시, 분, 초) 및 타임존 정보를 나타내는 데이터 타입입니다.
INTERVAL 날짜/시간 두 날짜 또는 시간 값 사이의 간격을 나타내는 데이터 타입입니다.
     
ARRAY 배열 여러 값의 컬렉션을 나타내는 데이터 타입입니다.
JSON JSON JSON(JavaScript Object Notation) 형식의 데이터를 나타내는 데이터 타입입니다.
JSONB JSON 바이너리 형식으로 저장된 JSON 데이터를 나타내는 데이터 타입입니다.
HSTORE 기타 키-값 쌍의 컬렉션을 나타내는 데이터 타입입니다.
UUID 기타 범용 고유 식별자(UUID) 값을 나타내는 데이터 타입입니다.
     
BOX 기하학 2차원 공간에서 사각형을 나타내는 데이터 타입입니다.
LINE 기하학 2차원 공간에서 선을 나타내는 데이터 타입입니다.
POINT 기하학 2차원 공간에서 점을 나타내는 데이터 타입입니다.
LSEG 기하학 2차원 공간에서 선분을 나타내는 데이터 타입입니다.
POLYGON 기하학 2차원 공간에서 다각형을 나타내는 데이터 타입입니다.
     
INET 네트워크 IPv4 또는 IPv6 주소를 나타내는 데이터 타입입니다.
MACADDR 네트워크 MAC(Media Access Control) 주소를 나타내는 데이터 타입입니다.
CIDR 네트워크 네트워크 주소 블록을 나타내는 데이터 타입입니다
     
MONEY 화폐 통화 값을 저장하는데 사용하는 데이터 타입입니다.
 

Getting Started with PostgreSQL Data Types

Summary: in this tutorial, you will learn about PostgreSQL data types including Boolean, character, numeric, temporal, array, json, uuid, and special types. Overview of PostgreSQL data types PostgreSQL supports the following data types: Boolean A Boolean d

www.postgresqltutorial.com

 

 

2) 데이터 타입 종류 : Boolean


💡 데이터 타입 종류 : 진위형

- 해당 타입에는 bool과 boolean으로 동일한 논리적인 참과 거짓을 나타내는 데이터 타입을 의미합니다.
- 해당 타입의 값은 TRUE(참)과 FALSE(거짓)을 표현하는데 유연한 다양한 방식들을 지원합니다.
- 주로 해당 타입은 조건부 식이나 논리 연산에서 자주 사용됩니다. 예를 들어, WHERE 절에서 특정 조건을 검사하거나, 참/거짓 값을 반환하는 함수를 작성할 때 사용할 수 있습니다.
데이터 타입 설명
BOOL, BOOLEAN 참(True) 또는 거짓(False) 값을 나타내는 데이터 타입입니다.
 

PostgresQL BOOLEAN Data Type with Practical Examples

Summary: in this tutorial, you will learn about the PostgreSQL Boolean data type and how to use it in designing the database tables. Introduction to the PostgreSQL Boolean type PostgreSQL supports a single Boolean data type: BOOLEAN that can have three val

www.postgresqltutorial.com

 

 

💡 [참고] True(참)과 False(거짓)을 표현하는 값들입니다.
True False
true false
't’ ‘f’
‘true’ ‘false’
‘y’ ‘n’
‘yes’ ‘no’
'1’ ‘0’
#table 생성
CREATE TABLE stock_availability (
   product_id INT PRIMARY KEY,
   available BOOLEAN NOT NULL
);

# BOOLEAN 형에 들어가는 값들 확인
INSERT INTO stock_availability (product_id, available)
VALUES
	(100, TRUE),
	(200, FALSE),
	(300, 't'),
	(400, '1'),
	(500, 'y'),
	(600, 'yes'),
	(700, 'no'),
	(800, '0');

 

💡 [참고] BOOLEAN 형의 default 값을 지정할 수도 있습니다.
ALTER TABLE stock_availability 
ALTER COLUMN available
SET DEFAULT FALSE;

 

 

 

3) 데이터 타입 종류 : Character


💡 데이터 타입 종류 : Character
데이터 타입 공백문자 허용 여부 설명
CHARACTER(n), CHAR(n) 허용함 고정 길이의 문자열을 나타내는 데이터 타입입니다. 문자열의 최대 길이는 n입니다.
CHARACTER VARYING(n), VARCHAR(n) 허용함 가변 길이의 문자열을 나타내는 데이터 타입입니다. 문자열의 최대 길이는 n입니다.
TEXT, VARCHAR 허용함 가변 길이의 긴 문자열을 나타내는 데이터 타입입니다.(길이에 대한 제한이 없는 문자열)

 

 

PostgreSQL Character Types: CHAR, VARCHAR, And TEXT

Summary: in this tutorial, you will learn about the PostgreSQL character data types including CHAR, VARCHAR, and TEXT, and learn how to select the right character types for your tables. Introduction to the PostgreSQL character types PostgreSQL provides th

www.postgresqltutorial.com

[ 더 알아보기 ]

💡 고정 길이의 문자열 VS 가변 길이의 문자열


- 고정 길이의 문자열은 지정한 자리수만큼의 문자열만 들어올 수 있고 가변 길이 문자열의 경우는 ‘최대’ 지정한 자리수 만큼의 문자열이 들어올 수 있습니다.


💡 TEXT 타입과 VARCHAR 타입이 동일하다는 거야?


- TEXT 타입의 경우 길이의 지정된 값이 없다는 표현이고 VARCHAR의 경우는 가변 길이 문자열이지만 자리수를 지정하지 않으면 길이의 지정된 값이 없다는 표현입니다.

 

 

💡 사용예시

- x, y, z라는 컬럼을 구성하였습니다. 각각 고정 길이 문자열, 가변 길이 문자열, 긴 문자열 형태로 각각의 타입을 지정하였습니다.
# 테이블 구성
CREATE TABLE character_tests (
	id serial PRIMARY KEY,
	x CHAR (1),
	y VARCHAR (10),
	z TEXT
);

# 테이블 데이터 삽입 OK
INSERT INTO character_tests (x, y, z)
VALUES(	'Y','varchar(n)','This is a very long text for the PostgreSQL text column'
	);

 

 

 

4) 데이터 타입 종류 : Numeric


💡 데이터 타입 종류 : Numeric
데이터 타입 Storage Size 분류 설명
SMALLINT(=INT2) 2byte 정수 16비트 정수 값을 나타내는 데이터 타입입니다.
(-32,768 ~ +32,767)
INTEGER(=INT)(=INT4) 4byte 정수 32비트 정수 값을 나타내는 데이터 타입입니다.
(-2,147,483,648 ~ +2,147,483,647)
BIGINT(=INT8) 8byte 정수 64비트 정수 값을 나타내는 데이터 타입입니다.
(-9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807)
       
SMALLSERIAL(=SERIAL2) 2byte 자동 증가 정수 16비트 정수 값의 자동 생성 열을 나타내는 데이터 타입입니다.
SERIAL(=SERIAL4) 4byte 자동 증가 정수 32비트 정수 값의 자동 생성 열을 나타내는 데이터 타입입니다.
BIGSERIAL(=SERIAL8) 8byte 자동 증가 정수 64비트 정수 값의 자동 생성 열을 나타내는 데이터 타입입니다.
       
REAL (=FLOAT4) 4byte 부동 소수점 숫자 32비트 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
FLOAT(n) - 부동 소수점 숫자 정밀도가 n인 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
FLOAT8 8byte 부동 소수점 숫자 64비트 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
DOUBLE PRECISION 8byte 부동 소수점 숫자 64비트 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
NUMERIC(p, s) - 부동 소수점 숫자 고정된 소수점 숫자 값을 나타내는 데이터 타입입니다. 전체 자릿수는 p이고, 소수 자릿수는 s입니다.

 

 

1. INTEGERS


데이터 타입 Storage Size 분류 설명
SMALLINT(=INT2) 2byte 정수 16비트 정수 값을 나타내는 데이터 타입입니다. (-32,768 ~ +32,767)
INTEGER(=INT)(=INT4) 4byte 정수 32비트 정수 값을 나타내는 데이터 타입입니다. (-2,147,483,648 ~ +2,147,483,647)
BIGINT(=INT8) 8byte 정수 64비트 정수 값을 나타내는 데이터 타입입니다. (-9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807)
 

A Look At Various PostgreSQL Integer Data Types

Summary: this tutorial introduces you to various PostgreSQL integer types including SMALLINT, INTEGER, and BIGINT. Introduction to PostgreSQL integer types To store the whole numbers in PostgreSQL, you use one of the following integer types: SMALLINT, INTE

www.postgresqltutorial.com

 

 [더 알아보기]

💡 어떠한 값이 들어올지 모르니 BIGINT 타입으로 모두 정해도 되지 않는가?


- BIGINT 타입을 사용하면 많은 스토리지를 소비할 뿐만 아니라 데이터베이스 성능도 저하되므로 각각 상황에 맞는 범위의 데이터 타입을 선택해야 합니다.

 

💡 사용예시

- 해당 예시에서는 SMALLINT, INTEGER, BIGINT 타입을 이용하여 데이터를 삽입하는 예시입니다.
-- Create the table
CREATE TABLE my_table (
  id SMALLINT,
  id2 INTEGER,
  id3 BIGINT,
  data VARCHAR(255)
);

-- Insert data into the table
INSERT INTO my_table (id, id2, id3, data) VALUES (1, 123, 123456789, 'Data 1');
INSERT INTO my_table (id, id2, id3, data) VALUES (2, 456, 987654321, 'Data 2');
INSERT INTO my_table (id, id2, id3, data) VALUES (3, 789, 9876543210, 'Data 3');

 

 

 

2. SERIAL


💡 SERIAL

- 정수 시퀀스를 생성하는 특별한 종류의 데이터베이스 타입입니다.

- 주로 테이블의 기본 키 값으로 사용되는 경우가 많습니다.

 

데이터 타입 Storage Size 분류 설명
SMALLSERIAL(=SERIAL2) 2byte 자동 증가 정수 16비트 정수 값의 자동 생성 열을 나타내는 데이터 타입입니다.
(1~32,767)
SERIAL(=SERIAL4) 4byte 자동 증가 정수 32비트 정수 값의 자동 생성 열을 나타내는 데이터 타입입니다.
(1~2,147,483,647)
BIGSERIAL(=SERIAL8) 8byte 자동 증가 정수 64비트 정수 값의 자동 생성 열을 나타내는 데이터 타입입니다.
(1~9,223,372,036,854,775,807)
 

Using PostgreSQL SERIAL To Create The Auto-increment Column

Summary: in this tutorial,  you will learn about the PostgreSQL SERIAL pseudo-type and how to use the SERIAL pseudo-type to define auto-increment columns in tables. Introduction to the PostgreSQL SERIAL pseudo-type In PostgreSQL, a sequence is a special k

www.postgresqltutorial.com

 

 

 

 

3. Float & Numeric


💡 Float & Numeric

- 해당 데이터 타입은 부동 소수점을 나타내는 데이터 타입입니다.

 

 

데이터 타입 Storage Size 분류 설명
FLOAT(n) n ~ 8byte 부동 소수점 숫자 정밀도가 n인 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
REAL (=FLOAT4) 4byte 부동 소수점 숫자 32비트 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
FLOAT8 8byte 부동 소수점 숫자 64비트 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
DOUBLE PRECISION 8byte 부동 소수점 숫자 64비트 부동 소수점 숫자 값을 나타내는 데이터 타입입니다.
NUMERIC(p, s) - 부동 소수점 숫자 고정된 소수점 숫자 값을 나타내는 데이터 타입입니다. 전체 자릿수는 p이고, 소수 자릿수는 s입니다.
 

An Overview Of PostgreSQL NUMERIC Type with Examples

Summary: in this tutorial, you will learn about the PostgreSQL NUMERIC type for storing numeric data. Introduction to PostgreSQL NUMERIC data type The NUMERIC type can store numbers with a lot of digits. Typically, you use the NUMERIC type for numbers tha

www.postgresqltutorial.com

 

 💡 NUMERIC(p, s) 사용예시

- p는 전체 자릿수를 의미하며 s는 소수 자릿수를 의미합니다. 이는 p만큼의 숫자를 저장하고 s만큼의 소수 자릿수를 저장합니다.
- 아래의 경우 최대 숫자가 10개의 자릿수를 가지며 소수 2번째만큼 소수 자릿수를 저장합니다.
CREATE TABLE my_table (
  id INT,
  amount NUMERIC(10, 2)
);

# NUMERIC(10, 2)로 지정하였을 경우 12345.67, 9876.54라는 값을 저장할 수 있습니다.
NUMERIC(10, 2)

# NUMERIC(5, 3)로 지정하였을 경우 12.345, 6.789라는 값을 저장할 수 있습니다.
NUMERIC(5, 3) 

# NUMERIC(8, 0)로 지정하였을 경우 12345678, 98765432라는 값을 지정할 수 있습니다.
NUMERIC(8, 0)

 

 

 

5) 데이터 타입 종류 : DATE/TIME


💡 데이터 타입 종류 : DATE

- 해당 데이터 타입은 날짜나 시간을 지정하는 데이터 타입입니다.
데이터 타입 Storage Size 설명
DATE 4 byte 연도, 월, 일을 나타내는 데이터 타입입니다.
TIME 8 byte 시간(시, 분, 초)을 나타내는 데이터 타입입니다.
TIMESTAMP 8 byte 연도, 월, 일, 시간(시, 분, 초)을 나타내는 데이터 타입입니다.
TIMESTAMPTZ - 연도, 월, 일, 시간(시, 분, 초) 및 타임존 정보를 나타내는 데이터 타입입니다.
INTERVAL - 두 날짜 또는 시간 값 사이의 간격을 나타내는 데이터 타입입니다.
-- 테이블 생성
CREATE TABLE sample_table (
  date_column DATE,
  time_column TIME,
  timestamp_column TIMESTAMP,
  timestamptz_column TIMESTAMPTZ,
  interval_column INTERVAL
);

-- 값을 INSERT
INSERT INTO sample_table (date_column, time_column, timestamp_column, timestamptz_column, interval_column)
VALUES (
	'2022-01-01',
  '12:30:45',
	'2022-01-01 12:30:45',
	'2022-01-01 12:30:45+00:00',
	'1 day'
);

 

 

8.5. Date/Time Types

8.5. Date/Time Types # 8.5.1. Date/Time Input 8.5.2. Date/Time Output 8.5.3. Time Zones 8.5.4. Interval Input 8.5.5. Interval Output PostgreSQL supports …

www.postgresql.org

 

 

 

 

6) 데이터 타입 종류 : ARRAY, JSON, UUID, HSTORE


 

💡 데이터 타입 종류 : ARRAY, JSON, UUID, HSTORE

- 해당 데이터 타입은 데이터 형태에 따라 다양한 데이터 타입을 넣을 수 있는 형태의 데이터 타입입니다.
데이터 타입 구조 설명
ARRAY 배열 여러 값의 컬렉션을 나타내는 데이터 타입입니다.
JSON JSON JSON(JavaScript Object Notation) 형식의 데이터를 나타내는 데이터 타입입니다.
JSONB JSON 바이너리 형식으로 저장된 JSON 데이터를 나타내는 데이터 타입입니다.
HSTORE 기타 키-값 쌍의 컬렉션을 나타내는 데이터 타입입니다.
UUID 기타 범용 고유 식별자(UUID) 값을 나타내는 데이터 타입입니다.

 

 

 

1. ARRAY


💡 ARRAY

- 여러 값을 하나의 필드에 저장하기 위해 사용되는 데이터 유형입니다. 배열은 동일한 데이터 유형의 값들의 컬렉션으로 구성됩니다.
- PostgreSQL에서는 배열을 다양한 방식으로 사용할 수 있습니다. 배열을 선언하고 초기화하거나, 배열 요소를 추가하거나 제거하거나 수정하거나 검색하는 등의 작업이 가능합니다.
데이터 유형 설명
integer[] 정수 배열
text[] 텍스트 배열
varchar[] 가변 길이 문자열 배열
boolean[] 부울 배열
date[] 날짜 배열
timestamp[] 타임스탬프 배열
json[] JSON 배열
jsonb[] 이진 형식의 JSON 배열
enum[] 열거형 배열
point[] 좌표 배열
circle[] 원 배열
interval[] 간격 배열
numeric[] 숫자 배열
geometry[] 공간 데이터 배열

 

💡 [참고] ARRAY 타입의 데이터 사용 예시
-- ARRAY 데이터 타입을 가진 테이블 생성
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    data TEXT[],
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- ARRAY 데이터 삽입
INSERT INTO my_table (data) VALUES ('{"apple", "banana", "orange"}');

 

 

PostgreSQL Array

Summary: in this tutorial, we will show you how to work with PostgreSQL array and introduce you to some handy functions for array manipulation. Array plays an important role in PostgreSQL. Every data type has its own companion array type e.g., integer has

www.postgresqltutorial.com

 

 

 

2. JSON, JSONB


💡  JSON 데이터 타입

- 텍스트 형식으로 저장되는 데이터 타입이며, 구조화된 데이터를 저장하고 쿼리 할 수 있지만, 읽기 및 쓰기 속도가 상대적으로 느릴 수 있습니다.

💡JSONB 데이터 타입

- ‘이진 형식’으로 저장되는 데이터 타입이며 읽기 및 쓰기 속도가 빠르며, 쿼리 성능도 향상됩니다. JSONB는 또한 색인을 사용하여 JSON 데이터 내부의 필드를 쿼리할 수 있습니다.
 

PostgreSQL JSON Tutorial

Summary: in this tutorial, you will learn how to how to work with PostgreSQL JSON data type and some useful operators and functions for handling JSON data. JSON stands for JavaScript Object Notation. JSON is an open standard format that consists of key-val

www.postgresqltutorial.com

 

 

 

[ 더 알아보기 ] 

💡JSON 데이터 타입과 JSONB 타입은 언제 사용하면 좋을까?

- JSON 타입은 데이터를 자주 수정하지 않고 '읽기만 하는 경우' 유용하며 JSONB 타입은 데이터의 '검색과 수정이 빈번하게 발생하는 경우'에 더 적합합니다.

 

 

💡 사용예시 

- JSON 타입의 데이터 사용 예시
INSERT INTO table_name (column_name)
VALUES ('{"name": "John", "age": 30, "email": "john@example.com"}');

INSERT INTO table_name (column_name)
VALUES ('[
  {"title": "PostgreSQL Basics", "category": "Database", "views": 100},
  {"title": "Introduction to JSONB", "category": "Database", "views": 50}
]');

 

 

💡 사용예시

- JSONB 타입의 데이터 사용 예시
INSERT INTO table_name (column_name)
VALUES ('{"name": "Jane", "age": 25, "email": "jane@example.com"}'::jsonb);

INSERT INTO table_name (column_name)
VALUES ('[
  {"title": "Advanced SQL Techniques", "category": "Database", "views": 200},
  {"title": "Working with JSONB in PostgreSQL", "category": "Database", "views": 150}
]'::jsonb);

 

PostgreSQL JSON Tutorial

Summary: in this tutorial, you will learn how to how to work with PostgreSQL JSON data type and some useful operators and functions for handling JSON data. JSON stands for JavaScript Object Notation. JSON is an open standard format that consists of key-val

www.postgresqltutorial.com

 

 

 

 

 

3. UUID


💡 UUID(Universally Unique Identifier)

- 고유한 식별자를 생성하기 위해 사용되는 데이터 타입입니다. 128비트 숫자로 표현되며 일반적으로 16진수로 표기됩니다.

- 데이터베이스에서 유니크한 값을 생성하고 관리하는 데 사용됩니다. 이를 통해 데이터의 식별과 관련된 작업을 수행할 수 있습니다. UUID 값은 랜덤 하게 생성되며, 충돌이 거의 발생하지 않으므로 다른 데이터와의 중복을 걱정할 필요가 없습니다.
- 예를 들어, 사용자 식별자, 주문 번호, 세션 토큰 등에 사용될 수 있습니다. 이러한 값들은 전역적으로 고유해야 하므로 UUID 타입이 적합한 선택입니다.

 

💡 사용예시

- uuid_generate_v4() 함수를 통해서 uuid 생성 v4버전을 이용하여 컬럼 추가 시 생성이 됩니다.
CREATE TABLE contacts (
    contact_id uuid DEFAULT uuid_generate_v4 (),
    first_name VARCHAR NOT NULL,
    last_name VARCHAR NOT NULL,
    email VARCHAR NOT NULL,
    phone VARCHAR,
    PRIMARY KEY (contact_id)
);

-- 아래와 같은 contact_id 컬럼 값을 반환 받습니다.

40e6215d-b5c6-4896-987c-f30f3678f608
6ecd8c99-4036-403d-bf84-cf8400f67836
3f333df6-90a4-4fda-8dd3-9485d27cee36
 

The Basics Of PostgreSQL UUID Data Type

Summary: in this tutorial, you will learn about the PostgreSQL UUID data type and how to generate UUID values using a supplied module. Introduction to PostgreSQL UUID type UUID stands for Universal Unique Identifier defined by RFC 4122 and other related st

www.postgresqltutorial.com

 

 [ 더 알아보기 ]

💡 uuid_generate_v4 말고 다른 것은 무엇이 있는가?


- 아래의 API 문서를 참고하시면 됩니다. uuid_generate_v1(), uuid_generate_v1mc(), uuid_generate_v3(), uuid_generate_v4(), uuid_generate_v5() 등이 있습니다.
 

F.49. uuid-ossp — a UUID generator

F.49. uuid-ossp — a UUID generator # F.49.1. uuid-ossp Functions F.49.2. Building uuid-ossp F.49.3. Author The uuid-ossp module provides functions to …

www.postgresql.org

 

 

 

7) 데이터 타입 종류 : geometric(기하학)


💡 데이터 타입 종류 : geometric(기하학)

- 해당 데이터 타입은 점, 선, 다각형 등의 기하학적 개체를 저장하고 쿼리 하는 데 사용됩니다. 

- 이를 사용하려면 공간 데이터를 저장하고 분석하는데 편리하며 위치 기반 서비스나 지리 정보 시스템에서 유용하게 활용할 수 있습니다.
데이터 타입 설명
BOX 2차원 공간에서 사각형을 나타내는 데이터 타입입니다.
LINE 2차원 공간에서 선을 나타내는 데이터 타입입니다.
POINT 2차원 공간에서 점을 나타내는 데이터 타입입니다.
LSEG 2차원 공간에서 선분을 나타내는 데이터 타입입니다.
POLYGON 2차원 공간에서 다각형을 나타내는 데이터 타입입니다.

 

 

1. BOX


💡 BOX

- 2차원 공간에서 '직사각형 상자'를 나타냅니다. 왼쪽 아래 모퉁이와 오른쪽 위 모퉁이로 정의됩니다.
-- BOX 컬럼을 가진 테이블 생성
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    box_column BOX
);

-- 데이터 삽입
INSERT INTO my_table (box_column) VALUES ('(1,1), (3,3)');

 

 

 

2. LINE


💡 LINE

- 2차원 공간에서 선분을 나타냅니다. 시작점과 끝점으로 정의됩니다.
-- LINE 컬럼을 가진 테이블 생성
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    line_column LINE
);

-- 데이터 삽입
INSERT INTO my_table (line_column) VALUES ('(1,1), (5,5)');

 

 

 

3. POINT


💡 POINT
- 2차원 공간에서 단일 점을 나타냅니다. x와 y 좌표로 정의됩니다.
-- POINT 컬럼을 가진 테이블 생성
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    point_column POINT
);

-- 데이터 삽입
INSERT INTO my_table (point_column) VALUES ('(3,4)');

 

 

4. LSEG


 💡 LSEG

- 2차원 공간에서 선분을 나타냅니다. 시작점과 끝점으로 정의됩니다.
-- LSEG 컬럼을 가진 테이블 생성
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    lseg_column LSEG
);

-- 데이터 삽입
INSERT INTO my_table (lseg_column) VALUES ('(1,1), (5,5)');

 

 

 

5. POLYGON


💡 POLYGON

- 2차원 공간에서 '폐쇄된 다각형'을 나타냅니다. 다각형의 꼭지점을 정의하는 점들로 구성됩니다.
-- POLYGON 컬럼을 가진 테이블 생성
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    polygon_column POLYGON
);

-- 데이터 삽입
INSERT INTO my_table (polygon_column) VALUES ('((1,1), (3,1), (2,3), (1,1))');

 

 

 

8) 데이터 타입 종류 : Network(네트워크)


💡 데이터 타입 종류 : Network(네트워크)

- 해당 데이터는 네트워크에 사용되는 데이터들을 구조화된 형태로 넣을 수 있는 데이터 타입입니다.
데이터 타입 설명
INET IPv4 또는 IPv6 주소를 나타내는 데이터 타입입니다.
MACADDR MAC(Media Access Control) 주소를 나타내는 데이터 타입입니다.
CIDR 네트워크 주소 블록을 나타내는 데이터 타입입니다.

 

1. INET


💡 INET

- IPv4 또는 IPv6 주소를 나타내는 데이터 타입입니다.
-- INET 컬럼을 가진 테이블 생성
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    ip_address INET
);

-- 데이터 삽입
INSERT INTO my_table (ip_address) VALUES ('192.168.0.1');

 

 

 

2. MACADDR


💡 MACADDR

- MAC(Media Access Control) 주소를 나타내는 데이터 타입입니다.
-- MACADDR 컬럼을 가진 테이블 생성
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    mac_address MACADDR
);

-- 데이터 삽입
INSERT INTO my_table (mac_address) VALUES ('00:0a:95:9d:68:16');

 

 

 

 

3. CIDR


💡 CIDR

- 네트워크 주소 블록을 나타내는 데이터 타입입니다.
-- CIDR 컬럼을 가진 테이블 생성
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY,
    network CIDR
);

-- 데이터 삽입
INSERT INTO my_table (network) VALUES ('192.168.0.0/24');

 

 

 

9) 데이터 타입 종류 : Monentary (화폐)


데이터 타입 설명
MONEY 통화 값을 저장하는데 사용하는 데이터 타입입니다.

 

 

1. MONEY


💡MONEY

- 통화와 관련된 데이터를 저장하기 위한 데이터 타입입니다.

- 이 타입은 통화단위와 금액을 함께 저장할 수 있습니다. Money 타입은 정확한 소수점으로 금액을 저장하며, 소수점 이하 2자리까지 표현할 수 있습니다.
- 이를 통해 정확한 금액 계산을 수행할 수 있습니다. Money 타입은 통화 기호를 포함하지 않으며, 숫자 값으로 저장됩니다. 이를 통해 다양한 통화 단위를 처리할 수 있습니다.
 

8.2. Monetary Types

8.2. Monetary Types # The money type stores a currency amount with a fixed fractional precision; see Table 8.3. The fractional precision …

www.postgresql.org

 

💡 사용예시

- amount라는 컬럼 값에 통화 단위와 함께 금액을 저장합니다.
CREATE TABLE transactions (
  id SERIAL PRIMARY KEY,
  amount MONEY
);

INSERT INTO transactions (amount)
VALUES ('$100.50');

 

💡 사용예시

- 화폐 단위를 달러(USD)에서 유로(ERU)로 변경을 하거나 화폐 단위를 달러(USD)에서 대한민국 원(KRW)으로 변환하는 방법을 확인해 봅니다.
-- 로케일 설정
SET lc_monetary = 'de_DE.UTF-8';

-- 통화 값 변경
UPDATE transactions
SET amount = '€100.50'
WHERE id = 1;


-- 로케일 설정
SET lc_monetary = 'ko_KR.UTF-8';

-- 통화 값 변경
UPDATE transactions
SET amount = '₩100,000'
WHERE id = 1;

 

 

 

 

오늘도 감사합니다. 😀

 

 

 

 

 

그리드형