데이터 성격에 맞는 데이터 타입을 선택해야 PostgreSQL이 더 빠르고 정확하게 우리가 원하는 역할을 수행함
데이터 타입
프로그래밍에서 변수 선언 시 변수 앞에 데이터 타입 선언해서 변수의 성질을 정의하는 것과 비슷함
숫자형
PostgreSQL에서 변수는 소문자로 관리됨
데이터 타입 | 설명 | 저장용량 |
INTEGER | - 소수점 자리를 제외한 정수만 입력 - 축약한 INT로 작성해도 됨 - 숫자 길이 제한 불가 |
4bytes |
NUMERIC(p,q) | - 소수점자리 표시 가능 - DECIMAL과 같음 - p에는 전체 자릿수, q는 소수점 자릿수 입력 - q를 빼면 p자리 정수를 의미함 |
가변 |
FLOAT | - 부동소수점 활용한 연산 | 4bytes, 8bytes |
SERIAL | - INTEGER를 기본값으로 1씩 추가됨 - 값이 자동으로 생성됨 - 프라이머리 키 컬럼의 데이터 타입으로 사용됨 |
4bytes |
화폐형
- 금액을 저장하는 데이터 타입
- 분수의 형태로 금액 저장
CREATE TABLE skirt_store(
price MONEY);
문자형
데이터 타입 | 설명 |
VARCHAR(n) | - n 이하 문자의 길이 그대로 저장 - n은 양의 정수로 데이터의 크기가 아니라 문자열의 길이 - n을 지정하지 않으면 임의의 길이 모든 문자열을 허용 |
CHAR(n) | - '문자길이+공백' 형태로 n에 맞추어 저장 - n을 지정하지 않으면 CHAR(1)과 동일함 |
TEXT | 길이에 상관없이 모든 문자열을 저장 (n을 쓰지 않는 VARCHAR) |
날짜 및 시간
데이터 타입 | 설명 | 저장용량 |
DATE | 날짜 정보만 표시 | 4 bytes |
TIME | 시간 정보만 표시 (시간대 정보 반영 x, 세계표준시) | 8 bytes |
TIME WITH TIME ZONE | 시간 정보만 표시 (시간대 정보 반영 o) | 12 bytes |
TIMESTAMP | 현재 세계 표준시(시간대 정보 반영 x) 날짜 시간 정보 모두 나타냄 |
8 bytes |
TIMESTAMPTZ | 세계표준시 + 시간대 정보 반영 | 8 bytes |
날짜 및 시간 TIMESTAMP - TIMESTAMP WITHOUT TIME ZONE (TIMESTAMP)
- TIMESTAMP WITH TIME ZONE (=TIMESTAMPTZ)
날짜 DATE
시간 TIME - TIME WITHOUT TIME ZONE(=TIME)
- TIME WITH TIME ZONE
불리언형
논리 데이터 타입
일반적으로는 참과 거짓만 나타내지만 PostgreSQL에는 알 수 없음 상태가 존재함
데이터 타입 | 설명 |
TRUE | True, yes,on, 1 모두 참 |
FALSE | False, no, off, 0 모두 거짓 |
Null | True도 아니고 False도 아님. 불확실성 |
배열형
여러 데이터를 하나의 집합으로 관리하기 위한 데이터 타입
하나 이상의 여러 개의 데이터를 저장할 수 있음
- 데이터 형식 지정
CREATE TABLE 테이블명(
변수명 INTEGER[]);
- 데이터 입력
대부분의 데이터탕딥은 본인의 배열 데이터타입도 가지고 있음
INTEGER는 INTEGER[]
VARCHAR는 VARCHAR[]
BOOLEAN은 BOOLEAN[] 등을 가지고 있음
JSON형
- json은 자바 스크립트 객체 표기법(Java Script Object Notaion)의 약자
- 서버와 웹 애플리케이션 간 데이터 주고받을 때 사용
- 키(key)와 밸류(value) 쌍으로 구성된 JSON 오브젝트와, 배열과 비슷한 구조를 가지는 JSON 배열로 나뉨
- JSON 오브젝트 밸류에는 숫자, 문자열, JSON 배열, JSON 등이 옴
장점 | 단점 | |
JSON | - 입력 텍스트의 정확한 사본 생성 - 불러올 때는 데이터를 재분석 해서 실행 |
처리 속도가 느림 |
JSONB | - 처리 속도가 비교적 빠름 - 출력 시에는 재분석 안해서 처리 속도가 빠름 - 애플리케이션에서는 일반적으로 선호함 |
데이터 저장 속도가 비교적 느림 |
CREATE TABLE 테이블명 (
변수명 JSON NOT NULL);
JSON 오브젝트의 구조
{"키 값" : "밸류 값"}
JSON 배열의 구조
[{"키 값" : "밸류 값"}, {"키 값" : "밸류 값"}]
데이터 타입 변경
- 기존의 데이터 타입을 변경 시 사용하는 형변환 연산자
- 저장된 정보를 미리 특정한 데이터 타입으로 지정해야할 때도 있고, 우리가 필요한 데이터 타입으로 변경 가능함
CAST 연산자
CAST (표현식 AS 바꿀 데이터 타입)
CAST 형 연산자
CAST 연산자를 사용하지 않고 더 간단하게 데이터 타입을 바꿀 수 잇음
:: 기호를 사용함
값::바꿀 데이터 타입
'PostgreSQL' 카테고리의 다른 글
2.2. pgAdmin4 (1) | 2022.01.06 |
---|---|
2.1. psql (0) | 2022.01.06 |
PostgreSQL (0) | 2022.01.03 |
1.3. PostgreSQL 구조 (0) | 2022.01.03 |
1.2. PostgreSQL 개발환경 구축 (0) | 2022.01.03 |