반응형
기존 MySQL/Maria DB를 사용하다 PostgreSQL를 쓸 일이 있어
기본 문법부터 알아볼려고 한다. 거의 비슷한 것 같은데 약간약간 다른 것 같아서 이렇게 작성한다.
테이블 생성
우선 테이블 생성에 앞서 테이블 생성 시 컬럼의 제약 조건에 대해 간단히 알아보자.
PRIMARY KEY PRIMARY KEY로 설정된 컬럼은 테이블 내의 데이터가 유일해야 하고 반드시 NOT NULL이어야 한다.
NOT NULL | NOT NULL로 설정된 컬럼은 NULL이 저장될 수 없다. |
UNIQUE | UNIQUE로 설정된 컬럼은 테이블 내에서 유일해야 한다. (중복X) |
CHECK | 지정하는 조건에 맞는 값이 들어가야 한다. |
REFERENCES | 참조하는 테이블의 특정 컬럼에 값이 존재해야 한다. |
제약 조건 같은 경우, MySQL이랑 똑같다. (다행히)
이제 테이블을 만들어 볼려고 한다.
board 테이블
- board_idx - SERIAL - primarykey - 인덱스값
- title - varhcar(50) - 제목
- type - SMALLINT - 카테고리
- author - varchar(20) - 글쓴이
- contents - TEXT - 글 내용
- reg_date - datetime - current_timestamp() - 등록일자
- mod_date - datetime - 수정일자
- use_yn - char(1) - default 0 - 삭제 유무 ( 0:기본, 1:삭제)
CREATE TABLE board (
board_idx SERIAL PRIMARY KEY,
title VARCHAR(50),
type SMALLINT,
author VARCHAR(20),
contents TEXT,
reg_date TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP,
mod_date TIMESTAMP WITHOUT TIME ZONE,
use_yn CHAR(1) DEFAULT '0'
);
SERIAL 타입은 MySQL에서 auto_increment와 유사하다.
다른 방법으론 시퀀스를 생성한 뒤 default로 nextval(’시퀀스’) 로 설정하면 1,2,3, … 이렇게 증가한다.
type 같은 경우, MySQL 처럼 TINYINT 타입이 없어 SMALLINT 로 설정했다.
reg_date, mod_date 는 datetime 대신해 TIMESTAMP WITHOUT TIME ZONE 으로 설정했다.
타임존 정보는 저장하지 않고 날짜, 시간 정보만 저장하기 위해서 이렇게 설정.
이제 각 컬럼에 대해서 코멘트를 추가해보자.
PostgreSQL에선 MySQL와 달리 CREATE TABLE 문 내부에서 코멘트를 포함시키는 구문이 없어
테이블 생성 후 별도로 추가해야 한다.
COMMENT ON TABLE board IS '게시판 테이블';
COMMENT ON COLUMN board.board_idx IS '인덱스값';
COMMENT ON COLUMN board.title IS '제목';
COMMENT ON COLUMN board.type IS '카테고리';
COMMENT ON COLUMN board.author IS '글쓴이';
COMMENT ON COLUMN board.contents IS '글 내용';
COMMENT ON COLUMN board.reg_date IS '등록일자';
COMMENT ON COLUMN board.mod_date IS '수정일자';
COMMENT ON COLUMN board.use_yn IS '삭제 유무 (0:기본, 1:삭제)';
반응형
'Database > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] TimeStamp, Date 날짜 형식 변환 (0) | 2025.05.08 |
---|