실제 테이블을 만들기 전에 PostgreSQL의 자료형을 살펴보자.
::자료형
과 같은 명시로 자료형을 지정할 수 있다.select now() ::timestamp as t; // 연월일 날짜, 시간
t |
-------------------|
2020-06-20 12:52:43|
select now() ::date as t; // 연월일
t |
----------|
2020-06-20|
select now() ::time as t; // 시간
t |
--------|
12:53:05|
interval
타입은 year, month, day, hour, minute, second 등의 단위와 결합하여 날짜/시간 연산이 가능하다.(시스템 시간 기준)select now() ::timestamp as date1
, now() + interval '3 day' as date2
;
----------------------------------------
date1 |date2 |
-------------------|-------------------|
2020-06-20 13:04:15|2020-06-23 13:04:15|
----------------------------------------
select now() + interval '3 d'
- now() as interval
;
---------
interval|
--------|
3 days|
---------
char
, varchar
, text
자료형 사용char(고정길이)
, varchar(가변길이)
: 문자의 크기를 미리 지정해주어야 함. (ex. char(10)
, varchar(10)
)char(10)
은 10byte가 아니고 10length임. 10자리의 한글이 들어감.create table test_table ( col1 varchar(10) );
insert into test_table (col1) values ('가나다라마바사아자차');
select * from test_table;
col1 |
----------|
가나다라마바사아자차|
interger(정수)
과 Floating-point numbers(부동 소숫점 숫자)
로 나뉨int
(정수), numeric
(부동 소수점 숫자) 사용smallint
: 2byte정수, 범위 : -32,768~32,767integer
: 4byte정수, 범위 : -2,147,483,648 ~ 2.147,483,647bigint
: 8byte정수numeric
또는 numeric(p,s) : 소수점 이하의 s자리수가 있는 p자리의 실수. 허용 범위가 크고 계산을 정확히 수행하는 자료형이나 다른 타입에 비해 느리다고 함(체감은 안됨).
금액 계산시 주로 사용 ! ex.
numeric(10,2)` = 99999999.99smallserial
, serial
, bigserial
등auto_increment
와 유사하게 동작함serial
타입은 시퀀스 생성기에서 자동으로 시퀀스가 생성된다.create table test_table {
auto_key serial
};
true
: 1
, y
, t
자동 매칭false
: 0
, n
, f
자동매칭NULL
허용box
, line
, circle
등의 도형타입byte
, bytea
xml
, json
array