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



我正在学习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 脚本,它会打开查询编辑器,我复制粘贴我的代码并执行它,但它返回:

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

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

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

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

您必须自行执行CREATE DATABASE mydb;(例如,仅选择该行并在连接到任何数据库时按F5,甚至是维护数据库"postgres"。然后点击"数据库">在 pgadmin4 主窗口/选项卡的对象浏览器中,按F5刷新视图,单击新数据库,打开带有 flash 图标的新查询工具(在新窗口/选项卡中(并在那里执行脚本的其余部分。

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

旁白:

"数据库"对于数据库来说不是好名字。

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

而且您通常不想使用数据类型CHAR(18).看:

  • 使用数据类型"text"存储字符串有什么缺点吗?
  • 获取唯一 ID 的整数总和
  • varchar(n( 的开销是多少?
  • 我应该向 VARCHAR 列添加任意长度限制吗?

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

最新更新