PostgreSQLの基本的な操作方法・コマンドまとめ

PostgreSQL

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、PostgreSQLの基本的な操作方法・コマンドについてまとめて解説します。

目次

PostgreSQLに入る前の操作

PostgreSQLのバージョン確認 & install確認

psql --version

psql コマンドのヘルプ

psql --help

# [ psql --help コマンドの実行結果 ]
psql is the PostgreSQL interactive terminal.

Usage:
  psql [OPTION]... [DBNAME [USERNAME]]

General options:
  -c, --command=COMMAND    run only single command (SQL or internal) and exit
  -d, --dbname=DBNAME      database name to connect to (default: "suda")
  -f, --file=FILENAME      execute commands from file, then exit
  -l, --list               list available databases, then exit
  -v, --set=, --variable=NAME=VALUE
                           set psql variable NAME to VALUE
                           (e.g., -v ON_ERROR_STOP=1)
  -V, --version            output version information, then exit
  -X, --no-psqlrc          do not read startup file (~/.psqlrc)
  -1 ("one"), --single-transaction
                           execute as a single transaction (if non-interactive)
  -?, --help[=options]     show this help, then exit
      --help=commands      list backslash commands, then exit
      --help=variables     list special variables, then exit

Input and output options:
  -a, --echo-all           echo all input from script
  -b, --echo-errors        echo failed commands
  -e, --echo-queries       echo commands sent to server
  -E, --echo-hidden        display queries that internal commands generate
  -L, --log-file=FILENAME  send session log to file
  -n, --no-readline        disable enhanced command line editing (readline)
  -o, --output=FILENAME    send query results to file (or |pipe)
  -q, --quiet              run quietly (no messages, only query output)
  -s, --single-step        single-step mode (confirm each query)
  -S, --single-line        single-line mode (end of line terminates SQL command)

Output format options:
  -A, --no-align           unaligned table output mode
      --csv                CSV (Comma-Separated Values) table output mode
  -F, --field-separator=STRING
                           field separator for unaligned output (default: "|")
  -H, --html               HTML table output mode
  -P, --pset=VAR[=ARG]     set printing option VAR to ARG (see \pset command)
  -R, --record-separator=STRING
                           record separator for unaligned output (default: newline)
  -t, --tuples-only        print rows only
  -T, --table-attr=TEXT    set HTML table tag attributes (e.g., width, border)
  -x, --expanded           turn on expanded table output
  -z, --field-separator-zero
                           set field separator for unaligned output to zero byte
  -0, --record-separator-zero
                           set record separator for unaligned output to zero byte

Connection options:
  -h, --host=HOSTNAME      database server host or socket directory (default: "local socket")
  -p, --port=PORT          database server port (default: "5432")
  -U, --username=USERNAME  database user name (default: "suda")
  -w, --no-password        never prompt for password
  -W, --password           force password prompt (should happen automatically)

For more information, type "\?" (for internal commands) or "\help" (for SQL
commands) from within psql, or consult the psql section in the PostgreSQL
documentation.

Report bugs to <pgsql-bugs@lists.postgresql.org>.

Login/Logout関連の操作

PostgreSQL(DB-System)にLoginする

PostgreSQLを直接操作するために、Loginします。

-p オプションを付与すると、Passwordの入力を求められるので、入力してEnterをします。

# localhostのDBに入る
psql <database_name>

# localHostのPostgreSQLに、User名 & DataBase名を指定してログインする
psql -U <username> -d <database_name>

# 外部PostgreSQLサーバーに接続する
psql -h <host> -p <port> -U <username> -d <database_name>

PostgreSQL(DB-System)からLogoutする

次の3つのコマンドのいずれかでログアウトできます。

postgres=# \q

postgres=# quit

postgres=# exit

PostgreSQLログイン後のヘルプ

PostgreSQL にLoginしている状態で、次のどちらかのコマンドでヘルプの確認ができます。

postgres=# help

# [ helpコマンドの実行結果 ]
You are using psql, the command-line interface to PostgreSQL.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

SQLコマンドのヘルプ: \h

postgres=# \h

# [  \hコマンドの実行結果: SQLコマンドのヘルプ ]
Available help:
  ABORT                            ALTER SEQUENCE                   CREATE AGGREGATE                 CREATE SUBSCRIPTION              DROP EXTENSION                   DROP TEXT SEARCH PARSER          REVOKE
  ALTER AGGREGATE                  ALTER SERVER                     CREATE CAST                      CREATE TABLE                     DROP FOREIGN DATA WRAPPER        DROP TEXT SEARCH TEMPLATE        ROLLBACK
  ALTER COLLATION                  ALTER STATISTICS                 CREATE COLLATION                 CREATE TABLE AS                  DROP FOREIGN TABLE               DROP TRANSFORM                   ROLLBACK PREPARED
  ALTER CONVERSION                 ALTER SUBSCRIPTION               CREATE CONVERSION                CREATE TABLESPACE                DROP FUNCTION                    DROP TRIGGER                     ROLLBACK TO SAVEPOINT
  ALTER DATABASE                   ALTER SYSTEM                     CREATE DATABASE                  CREATE TEXT SEARCH CONFIGURATION DROP GROUP                       DROP TYPE                        SAVEPOINT
  ALTER DEFAULT PRIVILEGES         ALTER TABLE                      CREATE DOMAIN                    CREATE TEXT SEARCH DICTIONARY    DROP INDEX                       DROP USER                        SECURITY LABEL
  ALTER DOMAIN                     ALTER TABLESPACE                 CREATE EVENT TRIGGER             CREATE TEXT SEARCH PARSER        DROP LANGUAGE                    DROP USER MAPPING                SELECT
  ALTER EVENT TRIGGER              ALTER TEXT SEARCH CONFIGURATION  CREATE EXTENSION                 CREATE TEXT SEARCH TEMPLATE      DROP MATERIALIZED VIEW           DROP VIEW                        SELECT INTO
  ALTER EXTENSION                  ALTER TEXT SEARCH DICTIONARY     CREATE FOREIGN DATA WRAPPER      CREATE TRANSFORM                 DROP OPERATOR                    END                              SET
  ALTER FOREIGN DATA WRAPPER       ALTER TEXT SEARCH PARSER         CREATE FOREIGN TABLE             CREATE TRIGGER                   DROP OPERATOR CLASS              EXECUTE                          SET CONSTRAINTS
  ALTER FOREIGN TABLE              ALTER TEXT SEARCH TEMPLATE       CREATE FUNCTION                  CREATE TYPE                      DROP OPERATOR FAMILY             EXPLAIN                          SET ROLE
  ALTER FUNCTION                   ALTER TRIGGER                    CREATE GROUP                     CREATE USER                      DROP OWNED                       FETCH                            SET SESSION AUTHORIZATION
  ALTER GROUP                      ALTER TYPE                       CREATE INDEX                     CREATE USER MAPPING              DROP POLICY                      GRANT                            SET TRANSACTION
  ALTER INDEX                      ALTER USER                       CREATE LANGUAGE                  CREATE VIEW                      DROP PROCEDURE                   IMPORT FOREIGN SCHEMA            SHOW
  ALTER LANGUAGE                   ALTER USER MAPPING               CREATE MATERIALIZED VIEW         DEALLOCATE                       DROP PUBLICATION                 INSERT                           START TRANSACTION
  ALTER LARGE OBJECT               ALTER VIEW                       CREATE OPERATOR                  DECLARE                          DROP ROLE                        LISTEN                           TABLE
  ALTER MATERIALIZED VIEW          ANALYZE                          CREATE OPERATOR CLASS            DELETE                           DROP ROUTINE                     LOAD                             TRUNCATE
  ALTER OPERATOR                   BEGIN                            CREATE OPERATOR FAMILY           DISCARD                          DROP RULE                        LOCK                             UNLISTEN
  ALTER OPERATOR CLASS             CALL                             CREATE POLICY                    DO                               DROP SCHEMA                      MOVE                             UPDATE
  ALTER OPERATOR FAMILY            CHECKPOINT                       CREATE PROCEDURE                 DROP ACCESS METHOD               DROP SEQUENCE                    NOTIFY                           VACUUM
  ALTER POLICY                     CLOSE                            CREATE PUBLICATION               DROP AGGREGATE                   DROP SERVER                      PREPARE                          VALUES
  ALTER PROCEDURE                  CLUSTER                          CREATE ROLE                      DROP CAST                        DROP STATISTICS                  PREPARE TRANSACTION              WITH
  ALTER PUBLICATION                COMMENT                          CREATE RULE                      DROP COLLATION                   DROP SUBSCRIPTION                REASSIGN OWNED                   
  ALTER ROLE                       COMMIT                           CREATE SCHEMA                    DROP CONVERSION                  DROP TABLE                       REFRESH MATERIALIZED VIEW        
  ALTER ROUTINE                    COMMIT PREPARED                  CREATE SEQUENCE                  DROP DATABASE                    DROP TABLESPACE                  REINDEX                          
  ALTER RULE                       COPY                             CREATE SERVER                    DROP DOMAIN                      DROP TEXT SEARCH CONFIGURATION   RELEASE SAVEPOINT                
  ALTER SCHEMA                     CREATE ACCESS METHOD             CREATE STATISTICS                DROP EVENT TRIGGER               DROP TEXT SEARCH DICTIONARY      RESET                

psqlコマンドのヘルプ: \?

postgres=# \?

# [  \?コマンドの実行結果: psqlコマンドのヘルプ ]
General
  \copyright             show PostgreSQL usage and distribution terms
  \crosstabview [COLUMNS] execute query and display results in crosstab
  \errverbose            show most recent error message at maximum verbosity
  \g [FILE] or ;         execute query (and send results to file or |pipe)
  \gdesc                 describe result of query, without executing it
  \gexec                 execute query, then execute each value in its result
  \gset [PREFIX]         execute query and store results in psql variables
  \gx [FILE]             as \g, but forces expanded output mode
  \q                     quit psql
  \watch [SEC]           execute query every SEC seconds

Help
  \? [commands]          show help on backslash commands
  \? options             show help on psql command-line options
  \? variables           show help on special variables
  \h [NAME]              help on syntax of SQL commands, * for all commands

Query Buffer
  \e [FILE] [LINE]       edit the query buffer (or file) with external editor
  \ef [FUNCNAME [LINE]]  edit function definition with external editor
  \ev [VIEWNAME [LINE]]  edit view definition with external editor
  \p                     show the contents of the query buffer
  \r                     reset (clear) the query buffer
  \s [FILE]              display history or save it to file
  \w FILE                write query buffer to file

Input/Output
  \copy ...              perform SQL COPY with data stream to the client host
  \echo [STRING]         write string to standard output
  \i FILE                execute commands from file
  \ir FILE               as \i, but relative to location of current script
  \o [FILE]              send all query results to file or |pipe
  \qecho [STRING]        write string to query output stream (see \o)

Conditional
  \if EXPR               begin conditional block
  \elif EXPR             alternative within current conditional block
  \else                  final alternative within current conditional block
  \endif                 end conditional block

Informational
  (options: S = show system objects, + = additional detail)
  \d[S+]                 list tables, views, and sequences
  \d[S+]  NAME           describe table, view, sequence, or index
  \da[S]  [PATTERN]      list aggregates
  \dA[+]  [PATTERN]      list access methods
  \db[+]  [PATTERN]      list tablespaces
  \dc[S+] [PATTERN]      list conversions
  \dC[+]  [PATTERN]      list casts
  \dd[S]  [PATTERN]      show object descriptions not displayed elsewhere
  \dD[S+] [PATTERN]      list domains
  \ddp    [PATTERN]      list default privileges
  \dE[S+] [PATTERN]      list foreign tables
  \det[+] [PATTERN]      list foreign tables
  \des[+] [PATTERN]      list foreign servers
  \deu[+] [PATTERN]      list user mappings
  \dew[+] [PATTERN]      list foreign-data wrappers
  \df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functions
  \dF[+]  [PATTERN]      list text search configurations
  \dFd[+] [PATTERN]      list text search dictionaries
  \dFp[+] [PATTERN]      list text search parsers
  \dFt[+] [PATTERN]      list text search templates
  \dg[S+] [PATTERN]      list roles
  \di[S+] [PATTERN]      list indexes
  \dl                    list large objects, same as \lo_list
  \dL[S+] [PATTERN]      list procedural languages
  \dm[S+] [PATTERN]      list materialized views
  \dn[S+] [PATTERN]      list schemas
  \do[S+] [PATTERN]      list operators
  \dO[S+] [PATTERN]      list collations
  \dp     [PATTERN]      list table, view, and sequence access privileges
  \dP[itn+] [PATTERN]    list [only index/table] partitioned relations [n=nested]
  \drds [PATRN1 [PATRN2]] list per-database role settings
  \dRp[+] [PATTERN]      list replication publications
  \dRs[+] [PATTERN]      list replication subscriptions
  \ds[S+] [PATTERN]      list sequences
  \dt[S+] [PATTERN]      list tables
  \dT[S+] [PATTERN]      list data types
  \du[S+] [PATTERN]      list roles
  \dv[S+] [PATTERN]      list views
  \dx[+]  [PATTERN]      list extensions
  \dy[+]  [PATTERN]      list event triggers
  \l[+]   [PATTERN]      list databases
  \sf[+]  FUNCNAME       show a function's definition
  \sv[+]  VIEWNAME       show a view's definition
  \z      [PATTERN]      same as \dp

Formatting
  \a                     toggle between unaligned and aligned output mode
  \C [STRING]            set table title, or unset if none
  \f [STRING]            show or set field separator for unaligned query output
  \H                     toggle HTML output mode (currently off)
  \pset [NAME [VALUE]]   set table output option
                         (border|columns|csv_fieldsep|expanded|fieldsep|
                         fieldsep_zero|footer|format|linestyle|null|
                         numericlocale|pager|pager_min_lines|recordsep|
                         recordsep_zero|tableattr|title|tuples_only|
                         unicode_border_linestyle|unicode_column_linestyle|
                         unicode_header_linestyle)
  \t [on|off]            show only rows (currently off)
  \T [STRING]            set HTML <table> tag attributes, or unset if none
  \x [on|off|auto]       toggle expanded output (currently off)

Connection
  \c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
                         connect to new database (currently "postgres")
  \conninfo              display information about current connection
  \encoding [ENCODING]   show or set client encoding
  \password [USERNAME]   securely change the password for a user

Operating System
  \cd [DIR]              change the current working directory
  \setenv NAME [VALUE]   set or unset environment variable
  \timing [on|off]       toggle timing of commands (currently off)
  \! [COMMAND]           execute command in shell or start interactive shell

Variables
  \prompt [TEXT] NAME    prompt user to set internal variable
  \set [NAME [VALUE]]    set internal variable, or list all if no parameters
  \unset NAME            unset (delete) internal variable

Large Objects
  \lo_export LOBOID FILE
  \lo_import FILE [COMMENT]
  \lo_list
  \lo_unlink LOBOID      large object operations

ロール(ユーザー)の各種操作

ユーザー情報一覧を表示

# select * from pg_user; で、ユーザー情報一覧を表示する

postgres=# select * from pg_user;
 usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig 
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
 postgres |       10 | t           | t        | t       | t            | ******** |          | 
 robotama |    16386 | f           | f        | f       | f            | ******** |          | 
(2 rows)

現在のユーザー(Role)を表示

select current_user;

ユーザーのロールを一覧表示

# \du でユーザーのロールを一覧表示

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

ロール(ユーザー)作成

ロール属性には、login, superuser, createdb, createrole, replication, password の6つのがあります。

Role説明
loginPostgreSQLにログインすることができるRole。
データベースにアクセスする権限を持たない。
superuserすべてのデータベース、テーブル、そしてロールに対して完全な制御権限を持つRole。
createdb新しいデータベースを作成することができるRole。
createrole新しいロールを作成することができるRole。
replicationストリーミングレプリケーションを設定するために必要な権限を持つRole。
password他のユーザーのパスワードを変更する権限を持つRole。
superuserにもこの権限があるため、このRoleは必ずしも必要ではない。
# create role <ROLE_NAME> <Attributes>; でロール(ユーザー)作成

postgres=# create role robotama login;
CREATE ROLE

# 追加した、Roleを確認する
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 robotama  |                                                            | {}

ユーザーの切り替え

\connect - <USER_NAME>

ロール(ユーザー)属性の変更

# alter role <ROLE_NAME> <Attributes>; でロール(ユーザー)属性の変更

postgres=# alter role robotama nologin;
ALTER ROLE
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 robotama  | Cannot login                                               | {}

スーパーユーザーへ変更

alter role <USER_NAME> with creatural superuser;

ロール(ユーザー)の削除

# drop role <ROLE_NAME>; でロール(ユーザー)の削除

postgres=# drop role robotama;
DROP ROLE
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

スーパーユーザー権限剥奪

alter role <USER_NAME> with creatural nosuperuser;

ロール(ユーザー)にTableの操作権限を付与する

与えられる権限の一覧は、次のとおりです。

権限説明
SELECTテーブルから行を選択する権限。
INSERTテーブルに新しい行を挿入する権限。
UPDATEテーブル内の既存の行を更新する権限。
DELETEテーブル内の既存の行を削除する権限。
TRUNCATEテーブルの全行を削除する権限。
REFERENCES外部キー制約を設定する権限。
TRIGGERテーブルにトリガーを作成する権限。
CREATEデータベースオブジェクトを作成する権限。
CONNECTデータベースに接続する権限。
TEMPORARY一時的なテーブルを作成する権限。
EXECUTE関数やストアドプロシージャを実行する権限。
USAGEデータベースオブジェクトを使用する権限。
ALL PRIVILEGESオブジェクトに対する全ての操作を行う権限。主にSUPERUSERに設定される。
# grant <権限> on <TABLE_NAME> to <ROLE_NAME>; でロール(ユーザー)に権限を付与する

# usersテーブルの参照、レコード追加、更新、削除の権限をrobotamaロールに付与する
postgres=# grant select, insert, update, delete on users to robotama;

ロール(ユーザー)のTable操作権限を確認する

# \z < TABLE_NAME > または、\dp < TABLE_NAME > でロール(ユーザー)のTable操作権限を確認する

postgres=# \dp users
                                 Access privileges
 Schema | Name  | Type  |     Access privileges     | Column privileges | Policies 
--------+-------+-------+---------------------------+-------------------+----------
 public | users | table | postgres=arwdDxt/postgres+|                   | 
        |       |       | robotama=arwd/postgres    |                   | 
(1 row)

postgres=# \z users
                                 Access privileges
 Schema | Name  | Type  |     Access privileges     | Column privileges | Policies 
--------+-------+-------+---------------------------+-------------------+----------
 public | users | table | postgres=arwdDxt/postgres+|                   | 
        |       |       | robotama=arwd/postgres    |                   | 
(1 row)

ロール(ユーザー)の権限を剥奪する

# revoke <権限> on <TABLE_NAME> from <ROLE_NAME>; でロール(ユーザー)の権限を剥奪する

postgres=# revoke select, insert, update, delete on users from robotama;

データベースの操作系統

データベース一覧の表示・確認

# \l で、データベース一覧の表示・確認

postgres-# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

データベースを新規作成する

# create database < DB_NAME >; で データベースの追加

postgres=# create database robotama;
CREATE DATABASE

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 robotama  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)

データベースをオーナー指定して新規作成する

create database <DB_NAME> owner <OWNER_NAMR>;

データベースをエンコーディング指定して新規作成する

create database <DB_NAME> encoding <ENCODE_NAMR>;

データベースをオーナー&エンコーディング指定して新規作成する

postgres=# create database test owner robotama encoding UTF8;
CREATE DATABASE

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 robotama  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 test      | robotama | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
(5 rows)

データベースの選択・切り替え

# \c < DB_NAME > または、\connect < DB_NAME > でデータベースの選択・切り替え

postgres=# \c robotama
psql (12.14, server 11.19)
You are now connected to database "robotama" as user "postgres".

robotama=# \connect postgres
psql (12.14, server 11.19)
You are now connected to database "postgres" as user "postgres".

postgres=# 

データベースの削除

postgres=# drop database robotama;
DROP DATABASE

Tableの操作系統

テーブルの作成

# テーブルの作成

postgres=# CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL UNIQUE,
    password VARCHAR(100) NOT NULL,
    created_at TIMESTAMP NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMP
);

テーブルだけの一覧表示

\dt コマンドは、データベース内のテーブルだけの一覧を表示します。

# \dtコマンドで、テーブルだけの一覧表示

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

テーブル一覧の表示( View, Index, Sequence 含む詳細情報 )

\d\dt コマンドは、どちらもテーブル情報を表示するために使用されますが、表示される情報の範囲に違いがあります。

\d コマンドは、Table や View, Index, Sequenceなどのオブジェクトに関する詳細情報を表示します。

それに対して\dt コマンドは、テーブルだけの一覧を表示するために使用されます。

# \d で、テーブル一覧の表示( View, Index, Sequence 含む詳細情報 )

postgres=# \d
              List of relations
 Schema |     Name     |   Type   |  Owner   
--------+--------------+----------+----------
 public | users        | table    | postgres
 public | users_id_seq | sequence | postgres
(2 rows)

テーブルの詳細表示 (テーブル構造の確認)

# \d <TABLE_NAME> で、テーブルのスキーマの詳細表示

postgres=# \d users
                                        Table "public.users"
   Column   |            Type             | Collation | Nullable |              Default              
------------+-----------------------------+-----------+----------+-----------------------------------
 id         | integer                     |           | not null | nextval('users_id_seq'::regclass)
 name       | character varying(50)       |           | not null | 
 email      | character varying(100)      |           | not null | 
 password   | character varying(100)      |           | not null | 
 created_at | timestamp without time zone |           | not null | now()
 updated_at | timestamp without time zone |           |          | 
Indexes:
    "users_pkey" PRIMARY KEY, btree (id)
    "users_email_key" UNIQUE CONSTRAINT, btree (email)

スキーマ操作関連

スキーマ一覧

# \dn でスキーマ一覧表示できます。

postgres=# \dn
  List of schemas
  Name  |  Owner   
--------+----------
 public | postgres
(1 row)

スキーマを確認

# select current_schema; でスキーマを確認できます。

postgres=# select current_schema;
 current_schema 
----------------
 public
(1 row)

スキーマ作成

create schema <schema_name>;

スキーマ変更

set search_path to <schema_name>;

DB・SQL関連書籍

参考・引用

  1. PostgreSQLのよく使うコマンド一覧
  2. [PostgreSQL] よく使うコマンドまとめ

最近の投稿