반응형
해당 글에서는 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 | 화폐 | 통화 값을 저장하는데 사용하는 데이터 타입입니다. |
2) 데이터 타입 종류 : Boolean
💡 데이터 타입 종류 : 진위형
- 해당 타입에는 bool과 boolean으로 동일한 논리적인 참과 거짓을 나타내는 데이터 타입을 의미합니다.
- 해당 타입의 값은 TRUE(참)과 FALSE(거짓)을 표현하는데 유연한 다양한 방식들을 지원합니다.
- 주로 해당 타입은 조건부 식이나 논리 연산에서 자주 사용됩니다. 예를 들어, WHERE 절에서 특정 조건을 검사하거나, 참/거짓 값을 반환하는 함수를 작성할 때 사용할 수 있습니다.
데이터 타입 | 설명 |
BOOL, BOOLEAN | 참(True) 또는 거짓(False) 값을 나타내는 데이터 타입입니다. |
💡 [참고] 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 | 허용함 | 가변 길이의 긴 문자열을 나타내는 데이터 타입입니다.(길이에 대한 제한이 없는 문자열) |
[ 더 알아보기 ]
💡 고정 길이의 문자열 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) |
[더 알아보기]
💡 어떠한 값이 들어올지 모르니 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) |
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입니다. |
💡 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'
);
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"}');
2. JSON, JSONB
💡 JSON 데이터 타입
- 텍스트 형식으로 저장되는 데이터 타입이며, 구조화된 데이터를 저장하고 쿼리 할 수 있지만, 읽기 및 쓰기 속도가 상대적으로 느릴 수 있습니다.
💡JSONB 데이터 타입
- ‘이진 형식’으로 저장되는 데이터 타입이며 읽기 및 쓰기 속도가 빠르며, 쿼리 성능도 향상됩니다. JSONB는 또한 색인을 사용하여 JSON 데이터 내부의 필드를 쿼리할 수 있습니다.
[ 더 알아보기 ]
💡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);
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
[ 더 알아보기 ]
💡 uuid_generate_v4 말고 다른 것은 무엇이 있는가?
- 아래의 API 문서를 참고하시면 됩니다. uuid_generate_v1(), uuid_generate_v1mc(), uuid_generate_v3(), uuid_generate_v4(), uuid_generate_v5() 등이 있습니다.
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 타입은 통화 기호를 포함하지 않으며, 숫자 값으로 저장됩니다. 이를 통해 다양한 통화 단위를 처리할 수 있습니다.
💡 사용예시
- 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;
오늘도 감사합니다. 😀
반응형
'DB > API Document' 카테고리의 다른 글
[DB/Postgres] SQLSTATE Code 목록 : SQL 상태코드 (1) | 2024.01.30 |
---|---|
[DB/postgres] 윈도우 함수(Window Function) 이해 및 활용방법 (0) | 2023.09.28 |
[DB/Postgres] 문자열 함수(String Function) 이해 및 활용방법 (0) | 2023.09.20 |
[DB/Postgres] 날짜 함수(Date Function) 이해 및 활용방법 (4) | 2023.09.16 |
[DB/Postgres] 수학 함수(Math Function) 이해 및 활용방법 (0) | 2023.09.13 |