psql — 첫 접속과 핵심 명령 10개
psql 만 잘 다뤄도 DB 작업 속도가 두 배. 매일 쓰는 단축 명령 10개를 정리.
1편에서 psql -d postgres 로 접속까지 했다면, 2편은 "psql 안에서 자주 쓰는 단축 명령" 을 정리합니다. SQL 표준이 아닌, psql 만의 편의 기능 — 그래서 \(역슬래시) 로 시작하고 메타 커맨드(meta command) 라고 부릅니다.
psql 접속 — 4가지 방법
# 1. 우분투 (postgres OS 사용자로 전환)
sudo -u postgres psql
# 2. 특정 데이터베이스로
psql -d mydb
# 3. 사용자·호스트·포트 지정 (원격 서버 등)
psql -h db.example.com -p 5432 -U myuser -d mydb
# 비밀번호 묻는 프롬프트 뜸
# 4. 도커 컨테이너 안의 psql
docker exec -it pg-learn psql -U postgres
접속 성공의 신호는 프롬프트가 db이름=#(슈퍼유저) 또는 db이름=>(일반 사용자) 로 바뀌는 것입니다.
매일 쓰는 메타 커맨드 10개
| 명령 | 의미 | 자주 쓰는 상황 |
|---|---|---|
| \l | 데이터베이스 목록 | 어떤 DB 가 있나 확인 |
| \c dbname | DB 전환 | 다른 DB 로 바꾸기 (재로그인 없이) |
| \dt | 테이블 목록 (현재 DB) | "무슨 테이블 있더라?" |
| \d tablename | 테이블 컬럼·인덱스 상세 | 스키마 확인 — 매번 씀 |
| \du | 사용자(역할) 목록 | 권한 확인 |
| \dn | 스키마 목록 | 멀티 스키마 환경 |
| \timing | 쿼리 실행 시간 표시 토글 | 성능 확인할 때 |
| \x | 결과 형식 가로↔세로 토글 | 컬럼 많을 때 (jsonb 등) |
| \? | 메타 커맨드 도움말 | 잊었을 때 — 셀프 컨닝페이퍼 |
| \q | psql 종료 | 나갈 때 (Ctrl+D 도 OK) |
다섯 번째 줄까지만 외워도 일주일이 편해집니다. 나머지는 "이런 게 있다" 만 기억하고 필요할 때 \? 로 찾으면 됩니다.
실전 — 첫 테이블 만들고 \d 로 살펴보기
postgres=# CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE,
joined TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE
postgres=# \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | users | table | postgres
postgres=# \d users
Table "public.users"
Column | Type | Collation | Nullable | Default
--------+--------------------------+-----------+----------+------------------------------------
id | integer | | not null | nextval('users_id_seq'::regclass)
name | text | | not null |
email | text | | |
joined | timestamp with time zone | | | now()
Indexes:
"users_pkey" PRIMARY KEY, btree (id)
"users_email_key" UNIQUE CONSTRAINT, btree (email)
\d users 가 컬럼·기본값·인덱스·제약을 한 화면에 보여줍니다. 실무에서 가장 많이 치는 명령 중 하나입니다.
결과 형식 바꾸기 — \x 와 \pset
컬럼이 많거나 jsonb 가 길어서 한 줄에 안 들어갈 때, \x 로 세로 모드(expanded) 로 토글합니다.
postgres=# \x
Expanded display is on.
postgres=# SELECT * FROM users LIMIT 1;
-[ RECORD 1 ]-----------------------------
id | 1
name | 준성
email | [email protected]
joined | 2026-05-16 22:50:00+09
출력 형식은 \pset format 으로도 바꿉니다 — aligned(기본), unaligned(파이프 |), csv, html 등. CSV 로 빼고 싶을 때 유용합니다.
postgres=# \pset format csv
postgres=# SELECT id, name FROM users;
id,name
1,준성
2,홍길동
스크립트 실행 — \i 와 외부 SQL 파일
여러 줄의 SQL 을 파일로 만들어 두고 한 번에 실행할 수 있습니다.
# schema.sql 파일을 미리 작성
postgres=# \i schema.sql
# 파일 안의 모든 SQL 이 차례로 실행
tip. 마이그레이션·시드 데이터 등 반복할 작업은 SQL 파일로 만들어 git 에 넣으세요. \i 한 번이면 어디서나 같은 상태로 재현됩니다. 20·22편(백업·파티셔닝) 에서 다시 활용.
주의 — \! 와 OS 명령. psql 안에서 \! 뒤에 OS 명령을 칠 수 있습니다 (예: \! ls). 편하지만 슈퍼유저 psql 에서 실수로 위험한 명령이 그대로 OS 에 떨어집니다. 운영 DB 에서는 가급적 피하기.
3편 — 데이터베이스·스키마·테이블 만들기
CREATE DATABASE / SCHEMA / TABLE, 명명 규칙, DROP 의 주의점. psql 위에서 본격적으로 구조를 잡습니다.
이전: 1편 설치 · 현재: 2편 (입문) · 다음 → 3편 DB·스키마·테이블 · 진행: 2/24