PostgreSQL

Front-End Developer at Autolabs Co., Ltd.
macOS 환경에서 PostgreSQL 18을 설치하고, 터미널(CLI) 환경에서 DB에 접근하는 방법, 그리고 프로시저/함수 작성법까지 정리합니다.
1. Homebrew로 PostgreSQL 설치 및 환경 설정
맥 사용자라면 brew가 가장 빠릅니다.
# PostgreSQL 18 버전 설치
brew install postgresql@18
# PATH 등록 (어느 위치에서든 postgres 명령어를 쓰기 위함)
echo 'export PATH="/opt/homebrew/opt/postgresql@18/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# 서비스 시작 및 버전 확인
brew services start postgresql@18
postgres --version
2. 사용자(User) 및 데이터베이스 생성
먼저 기본 관리자 계정으로 접속하여 우리 프로젝트에서 사용할 전용 환경을 세팅합니다.
-- 관리자 접속
psql postgres
-- 프로젝트 전용 계정 및 DB 생성
CREATE USER test_user WITH PASSWORD 'test123';
CREATE DATABASE test_db WITH ENCODING='utf-8' OWNER test_user;
-- 접속 종료
\q
3. 데이터베이스 접근 방법
가장 기본이 되는 방법으로, 터미널에서 직접 명령어를 입력합니다.
# psql -U [사용자명] -d [DB이름]
psql -U test_user -d test_db
장점 : 별도의 설치가 필요 없고 가볍습니다. 서버 환경(SSH)에서도 동일하게 사용 가능합니다.
단점 : 테이블이 복잡해지면 가독성이 떨어집니다.
4. Stored Procedure & Function 작성 및 호출
실무에서는 쿼리 보안과 성능을 위해 로직을 DB 내부에 저장하는 Stored Function을 자주 사용합니다.
Stored Function(함수) 생성
아래는 관리자 목록을 커서(refcursor) 형태로 변환하는 함수 예시입니다.
CREATE OR REPLACE FUNCTION public.FN_L_ADMIN(out1 refcursor)
RETURNS SETOF refcursor
LANGUAGE plpgsql
AS \(function\)
BEGIN
OPEN out1 FOR
SELECT ADMIN_NO, LOGIN_ID, PASSWD, NICK, EMAIL FROM TB_ADMIN;
RETURN NEXT out1;
END;
\(function\);
결과 확인하기(Transaction)
PostgreSQL에서 커서 데이터를 확인할 때는 반드시 Transaction을 시작해야 커서가 유지됩니다.
BEGIN;
SELECT fn_l_admin('out1'); -- 함수 실행 (커서명 지정)
FETCH ALL FROM out1; -- 커서에서 데이터 인출
COMMIT; -- 트랜잭션 종료



