如何在 pgadmin 4 中使用 SQL 的 DDL 创建 postgresql 数据库?

How do I create a postrgresql database using SQL's DDL on pgadmin4?

我正在学习 DDL 以使用 Postgresql 10 创建和定义 SQL 数据库。 我在 .sql 文件中有类似以下 SQL 的代码,我想在 psql 或 PgAdmin 4 中输入它,只是为了测试语法并查看数据库结构:

CREATE DATABASE database;

CREATE TYPE t_name AS 
(      first    VARCHAR(30),
       last     VARCHAR(60) 
);

CREATE TABLE telephone_m 
(   tnumber  VARCHAR(15) NOT NULL UNIQUE
);

CREATE TABLE people 
(   curp        CHAR(18)    NOT NULL PRIMARY KEY,
    pname       t_name      NOT NULL,
    birth_date  DATE        NOT NULL,
    telephone_m VARCHAR(15) REFERENCES telephone_m
);

CREATE TABLE clients
(   curp        CHAR(18)    NOT NULL PRIMARY KEY,
    cid         SERIAL      NOT NULL REFERENCES cards,  
    clocation   VARCHAR(29)
)   INHERITS (people);

CREATE TABLE cards
(   cid         BIGSERIAL   NOT NULL PRIMARY KEY,
    curp        CHAR(18)    NOT NULL REFERENCES clients,
    trips       SMALLINT,
    distance    NUMERIC, 
    points      NUMERIC
);

CREATE TABLE drivers
(   curp        CHAR(18)    NOT NULL PRIMARY KEY,
    rfc         CHAR(22)    NOT NULL UNIQUE,
    adress      t_adress    NOT NULL
)   INHERITS (people);

我试过在 PgAdmin 4 中右键单击新数据库 -> 创建脚本,它会打开查询编辑器,我复制粘贴我的代码并执行它,但它 returns:

ERROR:  CREATE DATABASE cannot be executed from a function or multi-command string
SQL state: 25001

我也尝试过直接从 PgAdmin 工具菜单使用查询工具,结果相同。

CREATE DATABASE database 之后缺少 ;(也许给数据库起一个更好的名字)。

数据库创建得很好。但是如果你想在新数据库中创建对象,你必须连接到它。在任何客户端中,包括pgAdmin4。

而且您不能在交易中 运行 CREATE DATABASE。必须自己承担。一次执行多个命令会自动包装到 pgAdmin 中的单个事务中。

您必须自己执行 CREATE DATABASE mydb;(例如,仅选择该行并在连接到 any[= 时按 F5 49=] DB, even the maintenance db "postgres". 然后在pgadmin4 main window/tab中的object browser中点击"Databases",点击F5 刷新视图,点击新数据库,打开一个带有闪光图标的新查询工具(在新的 window / 选项卡中)并执行您的其余部分那里有脚本。

psql 脚本通过使用元命令 \c 在创建新数据库后在同一会话中连接到新数据库进行管理。

旁白:

"database" 不是数据库的好名字。

CREATE TYPE AS (...),但只是 CREATE TABLE (...)。没有AS.

而且您通常不想使用数据类型 CHAR(18)。参见: