PostgreSQL 创建、删除数据库

一个 PostgreSQL 实例可以创建多个数据库,以便多个业务共用一个数据库实例,不同的业务使用不同的数据库名称,彼此之间通过数据库名称进行区分和隔离。

1. 创建数据库

创建数据库语法:

CREATE DATABASE name
    [ WITH ] [ OWNER [=] user_name ]
           [ TEMPLATE [=] template ]
           [ ENCODING [=] encoding ]
           [ STRATEGY [=] strategy ] ]
           [ LOCALE [=] locale ]
           [ LC_COLLATE [=] lc_collate ]
           [ LC_CTYPE [=] lc_ctype ]
           [ ICU_LOCALE [=] icu_locale ]
           [ LOCALE_PROVIDER [=] locale_provider ]
           [ COLLATION_VERSION = collation_version ]
           [ TABLESPACE [=] tablespace_name ]
           [ ALLOW_CONNECTIONS [=] allowconn ]
           [ CONNECTION LIMIT [=] connlimit ]
           [ IS_TEMPLATE [=] istemplate ]
           [ OID [=] oid ]

创建数据库示例:

CREATE DATABASE db1;
CREATE DATABASE db2 encoding utf8;
CREATE DATABASE db3 locale 'en_US.UTF-8';
CREATE DATABASE db4 lc_collate 'en_US.UTF-8';
CREATE DATABASE db5 lc_ctype 'en_US.UTF-8';

列出所有数据库名称:

postgres=# \l
                              List of databases
   Name    | Owner | Encoding |   Collate   |    Ctype    | Access privileges
-----------+-------+----------+-------------+-------------+-------------------
 db1       | antpg | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 db2       | antpg | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 db3       | antpg | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 db4       | antpg | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 db5       | antpg | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | antpg | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | antpg | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/antpg         +
           |       |          |             |             | antpg=CTc/antpg
 template1 | antpg | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/antpg         +
           |       |          |             |             | antpg=CTc/antpg
(7 rows)

切换不同的数据库需要断开已有连接,然后连接到新的数据库,在 psql 中可通过 \c 命令进行数据库的切换,切换之后连接的进程号已发生改变,如下所示:

postgres=# select pg_backend_pid();
 pg_backend_pid
----------------
           1412
(1 row)

postgres=# \c db2
You are now connected to database "db2" as user "antpg".
db2=# select pg_backend_pid();
 pg_backend_pid
----------------
           1625
(1 row)

2. 删除数据库

删除数据库语法:

DROP DATABASE [ IF EXISTS ] name [ [ WITH ] ( option [, ...] ) ]

where option can be:

    FORCE

删除数据库示例:

drop database db1;
drop database if exists db2;

文章评论

0条评论