PostgreSQL 데이터 유형: 바이트, 숫자, 문자, 이진
PostgreSQL 사용자를 위한 풍부한 네이티브 데이터 유형 세트를 제공합니다. 사용자는 CREATE TYPE 명령의 도움으로 새로운 유형을 추가할 수 있습니다. 또한 쿼리를 더 간단하고 읽기 쉽게 만듭니다.
데이터 유형 PostgreSQL
PostgreSQL 다음 데이터 유형을 지원합니다:
- 텍스트 유형
- 숫자 유형
- 날짜 및 시간
- XML
- JSON
- 부울
- 비트
- 이진 데이터
- 네트워크
- 배열
- 데이터 유형 만들기
- 부울
- 현세의
- UUID
- 배열
- JSON
- 네트워크 주소와 기하학적 데이터를 저장하기 위한 특수 데이터 유형입니다.
공부하자 PostgreSQL 데이터 유형을 자세히
문자 데이터 유형
PostgreSQL 텍스트 값을 저장하기 위한 문자 데이터 유형을 지원합니다. PostgreSQL 동일한 내부 구조로 문자 데이터 유형을 구축합니다. PostgreSQL CHAR(n), VARCHAR(n) 및 TEXT의 세 가지 문자 데이터 유형을 제공합니다.
성함 | 상품 설명 |
---|---|
변수(n) | 제한이 있는 가변 길이를 선언할 수 있습니다. |
문자(n) | 고정 길이, 공백 패딩 |
본문 | 이 데이터 유형을 사용하여 무제한 길이의 변수를 선언할 수 있습니다. |
숫자 데이터 유형
PostgreSQL 두 가지 유형의 숫자를 지원합니다.
- 정수
- 부동 소수점 숫자
성함 | 매장 규모 | 범위 |
---|---|---|
스몰 인트 | 2 바이트 | + 32768까지 32767 |
정수 | 4 바이트 | + 2147483648까지 2147483647 |
bigint | 8 바이트 | 9223372036854775808까지 9223372036854775807 |
소수 | 변수 | 131072진수로 선언한 경우 데이터 유형의 범위는 소수점 앞 16383자리부터 소수점 뒤 XNUMX자리까지입니다. |
숫자 | 변수 | 숫자로 선언할 경우 소수점 이하 131072자리부터 소수점 이하 16383자리까지의 숫자를 포함할 수 있습니다. |
현실 | 4 바이트 | 십진수 6 자리 정밀도 |
더블 | 8 바이트 | 십진수 15 자리 정밀도 |
이진 데이터 유형
이진 문자열은 옥텟 또는 바이트의 시퀀스입니다. 바이너리 Postgres 데이터 유형은 두 가지 방식으로 나뉩니다.
- 바이너리 문자열을 사용하면 값이 XNUMX인 확률을 저장할 수 있습니다.
- 인쇄할 수 없는 옥텟
문자열은 XNUMX옥텟을 허용하지 않으며 데이터베이스의 문자 집합 인코딩 규칙에 따라 유효하지 않은 다른 옥텟 값과 시퀀스도 허용하지 않습니다.
성함 | 저장 크기 | 상품 설명 |
---|---|---|
바이트 | 1~4바이트 + 바이너리 문자열 크기 | 가변 길이 이진 문자열 |
네트워크 주소 유형
많은 애플리케이션은 사용자 또는 센서의 IP 주소와 같은 네트워크 정보를 저장합니다. PostgreSQL 네트워크 데이터를 최적화하는 데 도움이 되는 세 가지 기본 유형이 있습니다.
성함 | 크기 | 상품 설명 |
---|---|---|
사과주 | 7 또는 19바이트 | IPV4 및 IPv6 네트워크 |
이넷 | 7 또는 19바이트 | IPV4 및 IPV5 호스트 및 네트워크 |
마카드르 | 6 바이트 | MAC 주소 |
네트워크 주소 유형을 사용하면 다음과 같은 이점이 있습니다.
- 저장 공간 절약
- 입력 오류 확인
- 서브넷별 데이터 검색과 같은 기능
텍스트 검색 유형
PostgreSQL 전체 텍스트 검색을 지원하도록 설계된 두 가지 데이터 유형을 제공합니다. 전체 텍스트 검색은 자연어 문서 모음을 검색하여 쿼리와 가장 잘 일치하는 문서를 검색하는 것입니다.
- TsVector 텍스트 검색 PostgreSQL 변수 유형은 텍스트 검색에 최적화된 형식으로 문서를 나타냅니다.
- 쿼리형 텍스트 검색은 검색해야 할 키워드를 저장합니다.
날짜/시간 데이터 유형
PostgreSQL 타임스탬프는 초 정밀도 대신 마이크로초 정밀도를 제공합니다. 또한 시간대를 포함하거나 포함하지 않고 저장할 수도 있습니다. PostgreSQL 입력 시 시간대가 포함된 타임스탬프를 UTC로 변환하여 저장합니다.
날짜 및 시간 입력은 기존 Postgres, ISO 8601, SQL 호환 등 다양한 형식으로 허용됩니다.
PostgreSQL 일/월/년 순서를 지원합니다. 지원되는 형식은 DMY, MDY, YMD입니다.
임시 데이터 유형
성함 | 크기 | 범위 | 분해능 |
---|---|---|---|
시간대가 없는 타임스탬프 | 8 바이트 | 기원전 4713년 ~ 서기 294276년 | 1마이크로초/14자리 |
시간대가 포함된 타임스탬프 | 8 바이트 | 기원전 4713년 ~ 서기 294276년 | 1마이크로초/14자리 |
데이터 | 4 바이트 | 기원전 4713년 ~ 서기 294276년 | 어느 날 |
시간대가 없는 시간 | 8 바이트 | 00:00:00 to 24:00:00 | 1마이크로초/14자리 |
시간대가 있는 시간 | 12 바이트 | 00:00:00 + 1459 ~ 24:00:00-1459 | 1마이크로초/14자리 |
간격 | 12 바이트 | -178000000~178000000년 | 1마이크로초/14자리 |
예
입력 | 상품 설명 |
---|---|
2025-09-07 | ISO 8601, 7월 XNUMX일(모든 날짜 스타일 포함)(권장 형식) |
2025 년 9 월 7 일 | 7월 XNUMX일(날짜 스타일 상관없음) |
9/7/2025 | MDY는 7월 9일, DMY는 XNUMX월 XNUMX일 |
9/7/25 | 7년 2025월 XNUMX일, MDY와 함께 |
2025-Sep-7 | 7월 XNUMX일(날짜 스타일 상관없음) |
7년 2018월 XNUMX일 | 7월 XNUMX일(날짜 스타일 상관없음) |
7-Sep-25 | 7년 2025월 XNUMX일, YMD와 함께 |
20250907 | 모든 모드에서 ISO 8601,7 20225년 XNUMX월 |
2025.250 | 연도 및 날짜(이 경우 7년 2025월 XNUMX일) |
J25250 | 율리우스 력 날짜 |
시간/시간대 입력이 있는 시간
입력 | 상품 설명 |
---|---|
11:19:38.507 11:19:38 11:19 111938 |
ISO 8601 |
11 : 19 AM | 11:19와 동일 |
11 : 19 PM | 23:19와 동일 |
23 : 19-3 23 : 19-03 : 00 231900-03 |
ISO 8601, 동부 표준시 기준 오후 11시 19분과 동일 |
23 : 19 동부 표준시 | 시간대는 EST로 지정되며 11:19 PM EST와 동일합니다. |
부울 유형
부울 데이터 유형은 다음을 보유할 수 있습니다.
- 참된
- 거짓
- null로
values.
당신은 불량배 or 부울 Boolean 데이터 유형으로 열을 선언하는 키워드입니다.
부울 열에 값을 삽입하면 Postgre는 다음과 같은 값을 변환합니다.
- 가능
- y
- 1
- t
- 참된
1 년까지.
다음과 같은 값을 사용하는 동안
- 아니
- N
- 0
- F
- 거짓
0으로 변환됩니다.
데이터를 선택하는 동안 값은 다시 yes, true, y 등으로 변환됩니다.
기하학적 데이터 유형
기하학적 데이터 유형은 2차원 공간 객체를 나타냅니다. 회전, 크기 조정, 변환 등과 같은 작업을 수행하는 데 도움이 됩니다.
성함 | 저장 크기 | 대표 | 상품 설명 |
---|---|---|---|
포인트 적립 | 16 바이트 | 비행기 위의 점 | (x, y) |
라인 | 32 바이트 | 무한라인 | ((xl.yl ).(x2.y2)) |
레세그 | 32 바이트 | 유한 선분 | ((xl.yl ).(x2.y2)) |
Box | 32 바이트 | 직사각형의 Box | ((xl.yl ).(x2.y2)) |
경로 | 16n + 16n바이트 | 닫힌 경로와 열린 경로 | ((xl.yl),…) |
다각형 | 40 + 16n바이트 | 다각형 | [(xl.yl)….] |
원 | 24 바이트 | 원 | <(xy).r> (중심점 및 반경) |
열거형
열거 됨 PostgreSQL 데이터 유형은 국가 코드나 지점 ID와 같이 거의 변경되지 않는 정보를 나타내는 데 유용합니다. 열거 데이터 유형은 데이터 무결성을 보장하기 위해 외래 키가 있는 테이블에 표시됩니다.
예시
머리 색깔은 인구 통계 데이터베이스에서 상당히 정적입니다.
CREATE TYPE hair_color AS ENUM ('brown','black','red','grey','blond')
범위 유형
많은 비즈니스 애플리케이션에는 범위 내의 데이터가 필요합니다. 일반적으로 범위를 처리하기 위해 두 개의 열(예: 시작 날짜, 종료 날짜)이 정의됩니다. 이는 비효율적이고 유지 관리가 어렵습니다.
Postgre는 다음과 같이 범위 유형을 구축했습니다.
- int4range — 정수 표시 범위
- int8range — bigint의 표시 범위
- numrange — 숫자 범위를 표시합니다.
- tstrange — 시간대 없이 타임스탬프를 표시하는 데 도움이 됩니다.
- 이상한 — 시간대와 함께 타임스탬프를 표시할 수 있습니다.
- 날짜 범위 — 날짜 범위
UUID 유형
UUID(Universally Unique Identified)는 알고리즘에 의해 생성되는 128비트 수량입니다. 동일한 알고리즘을 사용하여 전 세계의 다른 사람이 동일한 식별자를 생성할 가능성은 거의 없습니다. 그렇기 때문에 분산 시스템의 경우 이러한 식별자는 단일 데이터베이스 내에서 고유성을 제공하므로 이상적인 선택입니다. UUID는 소문자 XNUMX진수 그룹으로 작성되며 다양한 그룹은 하이픈으로 구분됩니다.
PostgreSQL 16바이트의 저장 공간을 사용하는 기본 UUID 데이터 유형이 있습니다. UUID는 기본 키에 이상적인 데이터 유형입니다.
예시
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre는 또한 모두 대문자, 하이픈, 중괄호 없음 등과 같은 대체 형식의 UUID 입력을 허용합니다.
XML 유형
PostgreSQL XML 데이터를 데이터 유형으로 저장할 수 있지만 이는 텍스트 데이터 유형의 확장일 뿐입니다. 그러나 장점은 입력 XML의 형식이 올바른지 확인한다는 것입니다.
예시
XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')
JSON 유형
JSON 데이터를 저장하려면 PostgreSQL 2가지 데이터 유형 제공
- JSON
- JSONB
JSON | 쟌비 |
---|---|
JSON 검증을 통한 텍스트 데이터 유형의 간단한 확장 | JSON 데이터의 이진 표현 |
삽입은 빠르지만 데이터 검색은 상대적으로 느립니다. | 삽입은 느리지만 선택(데이터 검색은 빠릅니다) |
공백을 포함하여 입력된 데이터를 그대로 저장합니다. | 인덱싱을 지원합니다. 검색 속도를 높이기 위해 공백을 최적화할 수 있습니다. |
데이터 검색 시 재처리 | 데이터 검색 시 재처리가 필요하지 않습니다. |
가장 널리 사용되는 JSON 데이터 유형은 JSON 데이터 유형을 사용해야 하는 특수한 필요성이 없는 한 jsonb를 사용했습니다.
예시
CREATE TABLE employee ( id integer NOT NULL, age integer NOT NULL, data jsonb );
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboareded": true}');
의사 유형
PostgreSQL 의사 유형이라고 하는 특수 목적 항목이 많이 있습니다. 의사 유형을 다음과 같이 사용할 수 없습니다. PostgreSQL 열 유형. 함수의 인수나 반환 유형을 선언하는 데 사용됩니다.
사용 가능한 각 의사 유형은 함수의 동작 문서가 단순히 특정 값을 가져오거나 반환하는 것과 일치하지 않는 상황에서 유용합니다. SQL 데이터 유형.
성함 | 상품 설명 |
---|---|
모든 품종 | 함수는 모든 입력 데이터 유형을 허용합니다. |
배열 | 이 함수는 모든 배열 데이터 유형을 허용합니다. |
모든 요소 | 이 함수는 모든 데이터 유형을 허용합니다. |
모든 열거형 | 이 함수는 모든 열거형 데이터 유형을 허용합니다. |
비배열 | 이 함수는 배열이 아닌 모든 데이터 유형을 허용합니다. |
Cstring | 함수는 null로 끝나는 C 문자열을 허용하거나 반환합니다. |
내부의 | 내부 함수는 서버 내부 데이터 유형을 허용하거나 반환합니다. |
Language_handler | 언어 처리기를 반환하도록 선언되었습니다. |
기록 | 지정되지 않은 행 유형을 반환하는 함수를 찾습니다. |
트리거 | 트리거 함수는 트리거를 반환하는 데 사용됩니다. |
이 함수를 사용하는 사용자는 의사 유형이 인수 유형으로 사용될 때 함수가 안전하게 작동하는지 확인해야 합니다.
데이터 유형을 사용하는 모범 사례
- 입력을 제한하려는 경우가 아니면 "텍스트" 데이터 유형을 사용하십시오.
- 절대로 “char”를 사용하지 마십시오.
- 정수는 "int"를 사용합니다. 정말 큰 숫자가 있는 경우에만 bigint를 사용하세요.
- 거의 항상 "숫자"를 사용하세요
- 부동 소수점 사용 PostgreSQL IEEE 754 데이터 소스가 있는 경우
요약
- PostgreSQL 사용자를 위한 풍부한 기본 데이터 유형 세트를 제공합니다.
- PostgreSQL 텍스트 값을 저장하기 위한 문자 데이터 유형 지원
- PostgreSQL 두 가지 유형의 숫자를 지원합니다: 1. 정수, 2. 부동 소수점 숫자
- 이진 문자열은 바이트 또는 옥텟의 시퀀스입니다.
- PostgreSQL 네트워크 데이터 저장을 최적화하는 데 도움이 되는 네트워크 주소 유형이 있습니다.
- 텍스트 검색 PostgreSQL 데이터 구조는 전체 텍스트 검색을 지원하도록 설계되었습니다.
- 날짜/시간 PSQL 데이터 유형은 다양한 형식의 날짜 및 시간 정보를 허용합니다.
- 부울 Postgres 필드 유형은 세 가지 값(1. True 2. False 3. Null)을 보유할 수 있습니다.
- 기하학적 PostgreSQL 데이터 유형은 2차원 공간 객체를 나타냅니다.
- 열거된 데이터 유형 PostgreSQL 국가 코드나 지점 ID와 같이 거의 변경되지 않는 정보를 나타내는 데 유용합니다.
- UUID(Universally Unique Identified)는 알고리즘에 의해 생성되는 128비트 수량입니다.
- PostgreSQL 의사 유형(pseudo-type)이라고 불리는 특수 목적 항목이 많이 있습니다.
- 입력을 제한하려는 경우가 아니면 "텍스트" 데이터 유형을 사용하는 것이 가장 좋습니다.