如何在pgadmin4上使用SQL的DDL创建postrgresql数据库?

时间:2019-09-06 00:32:20

标签: sql postgresql ddl pgadmin-4

我正在学习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中右键单击新数据库-> CREATE Script,它打开查询编辑器,我复制粘贴我的代码并执行它,但是返回:

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

我也尝试过直接从PgAdmin工具菜单中使用查询工具来获得相同的结果。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

创建数据库就好了。但是,如果要在新数据库中创建对象,则必须连接到它。在任何客户端中,包括pgAdmin4。

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

您必须自己执行CREATE DATABASE mydb;(例如,仅选择该行并在连接到 any DB时按 F5 ,甚至是维护db“ postgres”。然后在pgadmin4主窗口/选项卡的对象浏览器中单击“数据库” ,按 F5 刷新视图,单击新数据库,使用Flash图标(在新窗口/标签中)打开一个新的查询工具,然后在其中执行脚本的其余部分。

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

除:

“数据库”不是数据库的好名字。

CREATE TYPE AS (...),但仅CREATE TABLE (...)。否AS

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