postgresql

권무준·2025년 1월 8일

DB

목록 보기
1/3
  1. 접속
    psql -U [username] -h [hostname] -p [port] -d [database_name]
    -> -U는 대문자로!

***리눅스 명령문 입력 방법
ps -ef | grep postgres
서비스 어떤 계정으로 떠 있는지 확인 후
해당 계정으로 체인지하여
plsql 명령문을 입력한다.

plsql 명령문을 사용하려면
..\PostgreSQL\11\data에서 명령문을 실행해야 된다.
(JAVA와 같이 환경변수 등록 시 어디에서든 명령문 사용 가능)

  1. SQL명령문과 메타커맨드
    2-1 SQL명령문
    마지막에 ;을 붙여야 명령문이 실행된다.
    예시) select * from table

2-2 메타커맨드
마지막에 ;을 붙이지 않는다.
psql 클라이언트 내에서 처리되며, 명령어 자체가 단일 동작이므로 세미콜론이 필요 없다.

예시) \d table
테이블(릴레이션 파티션) 구조 확인

\d+ table
+를 붙이면 테이블의 스토리지 방식 등 더 상세한 내용을 확인 할 수 있다.

3 쿼리
3-1 LIMIT(3개의 데이터만 출력하는 방법)
SELECT * FROM TABLE LIMIT 3; (꼭 띄어줘야 한다. LIMIT 1)

4 파티션 테이블 만들기
파티션 테이블의 경우 RANGE와 LIST로 나뉘며
어떠한 특정값을 기준으로 카테고리를 정리할 때 사용한다.

4-1 RANGE 파티션 생성 방법
*테이블 생성 파티션 RANGE 설정 (sale_date 기준)
CREATE TABLE sales (
id SERIAL,
sale_date DATE NOT NULL,
amount NUMERIC
) PARTITION BY RANGE (sale_date);

파티션 테이블 생성
CREATE TABLE sales_2023 PARTITION OF sales
FOR VALUES FROM ('2023-01-01') TO ('2023-12-31');
파티션 테이블 생성
CREATE TABLE sales_2024 PARTITION OF sales
FOR VALUES FROM ('2024-01-01') TO ('2024-12-31');
*테이블 명이 달라도 다른 파티션 테이블과 레인지가 동일 할 경우 생성 되지 않는다.
CREATE TABLE sales_2025 PARTITION OF sales
FOR VALUES FROM ('2024-01-01') TO ('2024-12-31');

  • 파티션 테이블은 미리 생성 해 둬야한다.
  • time stamp 형식일 경우
    FOR VALUES FROM ('2025-01-01 00:00:00') TO ('2025-12-31 23:59:59');

INSERT INTO sales (sale_date, amount) VALUES ('2023-07-31', 1000);

sales 테이블에 데이터 저장 시 sale_date 값에 따라 자동으로
생성된 파티션 range에 따라 데이터가 저장된다
해당 쿼리문에서는 기간이(sale_date)가 2023-07-31이기 때문에
sales_2023에 데이터가 저장된다.
select * from sales를 해도 데이터가 조회된다.

4-1 LIST 파티션
CREATE TABLE members (
id SERIAL,
name TEXT NOT NULL,
membership_status TEXT NOT NULL
) PARTITION BY LIST (membership_status);

CREATE TABLE members_vip PARTITION OF members
FOR VALUES IN ('VIP');

CREATE TABLE members_regular PARTITION OF members
FOR VALUES IN ('Regular');

--members_vip 파티션 테이블에 저장
INSERT INTO members (name, membership_status) VALUES ('VIPUser', 'VIP');

--members_regular 파티션 테이블에 저장
INSERT INTO members (name, membership_status) VALUES ('RegularUser', 'Regular');

profile
신입 개발자 취업하기

0개의 댓글