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_COLLATE
和LC_CTYPE
的快捷方式。如果指定此项,则不能指定其中任何一个参数。 lc_collate
-
要在新数据库中使用的整理顺序 (
LC_COLLATE
)。这会影响应用于字符串的排序顺序。 lc_ctype
-
要在新数据库中使用的字符分类 (
LC_CTYPE
)。这会影响字符的分类,例如小写、大写和数字。 tablespace_name
-
将与新数据库关联的表空间的名字。您可以使用
DEFAULT
以使用模板数据库的表空间的名称。 allowconn
-
是否允许连接到此数据库。如果为
false
,则没有人可以连接到该数据库。默认值为true
,允许连接。 connlimit
-
连接数限制。
-1
(默认)表示没有限制。 istemplate
-
是否为模版数据库。 如果为
true
,则任何具有CREATEDB
权限的用户都可以克隆此数据库;如果为false
(默认值),则只有超级用户或数据库所有者可以克隆它。
PostgreSQL 创建数据库实例
在本实例中,我们将在 psql 工具中创建一个数据库 testdb
。
-
首先,请使用您自己的用户登录 PostgreSQL 服务器:
[~] psql -U postgres psql (14.4) Type "help" for help.
-
其次,使用默认的选项创建
testdb
数据库:CREATE DATABASE testdb;
CREATE DATABASE
如果您输入了一个已经存在的数据库名称, PostgreSQL 将返回一个错误:
ERROR: database "testdb" already exists
。 -
最后,使用
\c
命令切换到刚刚创建的testdb
数据库:\c testdb;
You are now connected to database "testdb" as user "postgres".
通常情况下,创建数据库是一个简单的操作。
结论
PostgreSQL CREATE DATABASE
语句用于在 PostgreSQL 服务器上创建一个新的数据库。