PostgreSQL CREATE DATABASE 创建数据库

本文介绍了如何在 PostgreSQL 中创建新的数据库。

数据库是表的容器,一个数据库中可以包含多个表。要想在 PostgreSQL 存储数据,你首先要创建一个数据库。

PostgreSQL 允许您使用 CREATE DATABASE 语句创建一个新的数据库。

PostgreSQL CREATE DATABASE 语法

要在 PostgreSQL 服务器上创建一个数据库,您必须是超级用户或者具有 CREATEDB 权限。

请按照如下语法使用 CREATE DATABASE 语句:

CREATE DATABASE db_name
[ [ WITH ] [ OWNER [=] user_name ]
       [ TEMPLATE [=] template ]
       [ ENCODING [=] encoding ]
       [ LOCALE [=] locale ]
       [ LC_COLLATE [=] lc_collate ]
       [ LC_CTYPE [=] lc_ctype ]
       [ TABLESPACE [=] tablespace_name ]
       [ ALLOW_CONNECTIONS [=] allowconn ]
       [ CONNECTION LIMIT [=] connlimit ]
       [ IS_TEMPLATE [=] istemplate ] ]

看起来这是一个很复杂的语句,但是最常用的是下面的一行语句:

CREATE DATABASE db_name;

您可以是按照任意的顺序使用可选的选项。以下是对其中的参数的说明:

db_name

要创建的数据库的名字。

user_name

将拥有新数据库的用户的角色名称。您可以使用 DEFAULT 表示执行命令的用户。

template

用于创建新数据库的模板名称。您可以使用 DEFAULT 表示默认模板的模板名称 (template1)。

encoding

要在新数据库中使用的字符集编码。您可以指定一个字符串常量(例如,'SQL_ASCII'),或者一个整数编码号,或者 DEFAULT (模板数据库的编码)。点击这里以查看 PostgreSQL 支持的字符集。

locale

这是一个设置 LC_COLLATELC_CTYPE 的快捷方式。如果指定此项,则不能指定其中任何一个参数。

lc_collate

要在新数据库中使用的整理顺序 (LC_COLLATE)。这会影响应用于字符串的排序顺序

lc_ctype

要在新数据库中使用的字符分类 (LC_CTYPE)。这会影响字符的分类,例如小写、大写和数字。

tablespace_name

将与新数据库关联的表空间的名字。您可以使用 DEFAULT 以使用模板数据库的表空间的名称。

allowconn

是否允许连接到此数据库。如果为 false,则没有人可以连接到该数据库。默认值为 true,允许连接。

connlimit

连接数限制。-1(默认)表示没有限制。

istemplate

是否为模版数据库。 如果为 true,则任何具有 CREATEDB 权限的用户都可以克隆此数据库;如果为 false(默认值),则只有超级用户或数据库所有者可以克隆它。

PostgreSQL 创建数据库实例

在本实例中,我们将在 psql 工具中创建一个数据库 testdb

  1. 首先,请使用您自己的用户登录 PostgreSQL 服务器:

    [~] psql -U postgres
    psql (14.4)
    Type "help" for help.
    
  2. 其次,使用默认的选项创建 testdb 数据库:

    CREATE DATABASE testdb;
    
    CREATE DATABASE

    如果您输入了一个已经存在的数据库名称, PostgreSQL 将返回一个错误:ERROR: database "testdb" already exists

  3. 最后,使用 \c 命令切换到刚刚创建的 testdb 数据库:

    \c testdb;
    
    You are now connected to database "testdb" as user "postgres".

    现在,您就可以创建一个表,并进入插入修改删除查询等操作了。

通常情况下,创建数据库是一个简单的操作。

结论

PostgreSQL CREATE DATABASE 语句用于在 PostgreSQL 服务器上创建一个新的数据库。