프로그래밍/ETC

[PostgreSQL] 알아두면 좋은 기본 명령어

PSQL 주요 Command

1. \c : 접속한 DB Instance를 변경.

여러 DB Instance들이 있고, 정보를 조회나 Query 실행 대상 DB Instance를 변경할 때 사용한다. 

 

사용법

\c [DB Name] [Connection User}

사용예

...
# Database Instance 'messenger'에 user 'user'로 접속
postgres=# \c messenger user
You are now connected to database "messenger" as user "user".
...

# Database Instance 'postgres'에 user 'postgres'로 접속
messenger=# \c postgres postgres
You are now connected to database "postgres" as user "postgres".
postgres=#

 

2. \list(or \l), \d[ t | s | f | v | u ] : 목록 조회용 명령어.

현재 접속한 DB에서 여러 목록 정보를 조회(단, \list, \du는 접속한 DB와 무관하게 동작)할 때 사용한다. Command 별로 조회되는 목록은 다음과 같다.

  • \list(or \l) : 전체 Database Instance 목록
  • \dt : 접속한 DB Instance의 Table 목록
  • \ds : Sequence 목록
  • \df : Function 목록
  • \dv : View 목록
  • \du : User 목록

위 명령 외에도 여러가지가 더 있지만 크게 사용하지 않아 따로 언급하지 않았다. (예를 들면 \dn은 Schema 목록, \di는 Index 목록 조회시 사용한다. \?를 통해 추가 명령어들을 조회할 수 있다.)

 

'\list' 사용예 ; 전체 DB Instance list 조회

messenger=# \list
                                             List of databases
   Name    | Owner | Encoding |  Collate   |   Ctype    | ICU Locale | Locale Provider | Access privileges 
-----------+-------+----------+------------+------------+------------+-----------------+-------------------
 board     | user  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | 
 messenger | user  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | 
 postgres  | user  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | 
 template0 | user  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/user          +
           |       |          |            |            |            |                 | user=CTc/user
 template1 | user  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/user          +
           |       |          |            |            |            |                 | user=CTc/user
 user      | user  | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | 
(6 rows)

 

'\dt' 사용예 ; 현재 접속한 DB Instance의 Table list 조회

messenger=# \dt
        List of relations
 Schema |  Name   | Type  | Owner 
--------+---------+-------+-------
 public | account | table | user
(1 row)

 

'\ds' 사용예 ; 현재 접속한 DB Instance의 Sequence list 조회

messenger=# \ds
             List of relations
 Schema |      Name      |   Type   | Owner 
--------+----------------+----------+-------
 public | account_id_seq | sequence | user
(1 row)

 

'\df' 사용예 ; 현재 접속한 DB Instance의 Function list 조회

...
messenger=# \df
                        List of functions
 Schema |  Name  | Result data type | Argument data types  | Type 
--------+--------+------------------+----------------------+------
 public | fn_sum | integer          | a integer, b integer | func
(1 row)

 

'\du' 사용예 ; User list 조회

messenger=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 mins      |                                                            | {}
 user      | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

 

그리고, 이 Command들은 모두 뒤에 '+'를 붙혀서 상세 정보를 추가할 수 있다. 추가되는 상세 정보 항목들은 Command별로 약간씩 다르다. 아래는 상세 정보를 포함한 Table 목록 조회의 예이다.

 

'\dt+' 사용예

messenger=# \dt+
                                     List of relations
 Schema |  Name   | Type  | Owner | Persistence | Access method |    Size    | Description 
--------+---------+-------+-------+-------------+---------------+------------+-------------
 public | account | table | user  | permanent   | heap          | 8192 bytes | 
(1 row)

 

3. \d : 특정 Table의 상세 정보를 조회
 

사용법

\d  [table name]

사용예 ; 'messenger' DB에 있는 'account' table 정보 조회

messenger=# \d account
                                     Table "public.account"
  Column  |          Type          | Collation | Nullable |               Default               
----------+------------------------+-----------+----------+-------------------------------------
 id       | integer                |           | not null | nextval('account_id_seq'::regclass)
 username | character varying(255) |           |          | 
 password | character varying(255) |           |          | 
Indexes:
    "account_pkey" PRIMARY KEY, btree (id)

 

4. \g, \s : Command 실행 History 조회 및 활용
  • \g : 방금 전에 실행했던 명령어를 실행. (
  • \s : 이전에 실행했던 명령어 전체 List 조회.

'\g' 사용예 : 별다른 Query문 없이 이전에 실행한 Query와 동일한 Query가 실행된다.

...
messsenger=# SELECT account;
 account 
--------
     11
(1 row)

messsenger=# \g
 account 
--------
     11
(1 row)

 

'\s' 사용예 : 이전에 실행 내역 전체 나열. 예에서는 마지막 2개의 실행 내역 포함해서 전체를 나열.

messenger=# \s
db
/list
/list
\list
create database messenger;
create db messenger;
CREATE DATABASE messenger;
\db
\list
\dt
\c messenger user
\dt
\d account
\list
\dt
\ds
\df
\du
\dt+
--More--

 

5. \h, \? : 도움말 조회
  • \h : SQL command 관련 도움말
  • \? : psql Command  관련 도움말

'\?' 사용예

...
messenger=# \?
General
  \copyright             show PostgreSQL usage and distribution terms
  \crosstabview [COLUMNS] execute query and display results in crosstab
...

  \lo_list
  \lo_unlink LOBOID      large object operations
...

 

'\h' 사용예

...
messenger=# \h
Available help:
  ABORT                            ALTER TEXT SEARCH TEMPLATE       CREATE PUBLICATION               DROP FUNCTION                    IMPORT FOREIGN SCHEMA
  ALTER AGGREGATE                  ALTER TRIGGER                    CREATE ROLE                      DROP GROUP                       INSERT
  ALTER COLLATION                  ALTER TYPE                       CREATE RULE                      DROP INDEX                       LISTEN
...
  ALTER TABLE                      CREATE OPERATOR                  DROP DOMAIN                      END                              UPDATE
  ALTER TABLESPACE                 CREATE OPERATOR CLASS            DROP EVENT TRIGGER               EXECUTE                          VACUUM
  ALTER TEXT SEARCH CONFIGURATION  CREATE OPERATOR FAMILY           DROP EXTENSION                   EXPLAIN                          VALUES
  ALTER TEXT SEARCH DICTIONARY     CREATE POLICY                    DROP FOREIGN DATA WRAPPER        FETCH                            WITH
  ALTER TEXT SEARCH PARSER         CREATE PROCEDURE                 DROP FOREIGN TABLE               GRANT

 

6. \! : shell command 실행.

psql에서 shell command를 실행할 때 사용한다. 주로 화면을 지우거나 '\i', '\e' command를 위해 현재 경로에 있는 파일 List를 조회하거나 Path를 변경할 때 사용한다. (!뒤에 한 칸의 공백이 있음을 유의하자)

 

사용법

\! [shell command]
ex)
\! clear : 화면 Clear
\! pwd : 현재 경로 확인
\! ls : 현재 경로의 파일 확인
\! cd [Path] : [Path]로 경로 이동

 

7. \q : psql 종료

'\q' 사용예

...
messenger=# \q
[user@localhost ~]# 
...

 

Reference

728x90