명령어/DB

[PostgreSQL] \d 테이블·객체의 구조를 뜯어본다

jykim23 2026. 7. 30. 22:10
반응형

설치·접속: PostgreSQL 설치와 접속

부제: 컬럼·타입·인덱스·외래키까지 한 테이블의 설계를 통째로 확인한다

psql -d shop -c '\d'          # 모든 객체(테이블·시퀀스 등) 목록
psql -d shop -c '\d orders'   # orders 테이블의 상세 구조
psql -d shop -c '\d users_id_seq'  # 시퀀스 같은 개별 객체도 가능
                                       Table "public.orders"
   Column   |           Type           | Collation | Nullable |              Default
------------+--------------------------+-----------+----------+------------------------------------
 id         | integer                  |           | not null | nextval('orders_id_seq'::regclass)
 user_id    | integer                  |           |          |
 product_id | integer                  |           |          |
 qty        | integer                  |           |          |
 ordered_at | timestamp with time zone |           |          | now()
Indexes:
    "orders_pkey" PRIMARY KEY, btree (id)
    "idx_orders_user" btree (user_id)
Foreign-key constraints:
    "orders_product_id_fkey" FOREIGN KEY (product_id) REFERENCES products(id)
    "orders_user_id_fkey" FOREIGN KEY (user_id) REFERENCES users(id)

\d는 psql의 describe 명령이다. 뒤에 객체 이름을 붙이면 그 테이블의 컬럼·타입·NULL 허용·기본값은 물론, 걸려 있는 인덱스와 외래키 관계까지 전부 펼쳐 보여준다. 남이 짜둔 스키마를 파악하거나 마이그레이션 전에 현재 구조를 확인할 때 가장 자주 쓴다. 이름 없이 그냥 \d만 치면 테이블·시퀀스·뷰를 아우른 전체 객체 목록이 나온다. 대소문자를 구분하려면 \d "MyTable"처럼 큰따옴표로 감싼다.

이렇게도 쓴다

인덱스와 저장 통계까지 더 자세히 본다. (+ 상세)

psql -d shop -c '\d+ orders'

 

이름 없이 치면 시퀀스를 포함한 전체 객체가 나온다.

psql -d shop -c '\d'

 

인덱스 하나만 콕 집어 정의를 확인한다.

psql -d shop -c '\d idx_orders_user'

 

특정 테이블의 인덱스만 골라 본다.

psql -d shop -c '\di orders*'

 

컬럼 이름만 뽑아 다른 명령에 넘긴다. (조합: information_schema + -At)

psql -d shop -Atc "SELECT column_name FROM information_schema.columns WHERE table_name='orders'"
반응형