如何在 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)
。参见:
- Any downsides of using data type "text" for storing strings?
- Get sum of integers for UNIQUE ids
- What is the overhead for varchar(n)?
- Should I add an arbitrary length limit to VARCHAR columns?
我正在学习 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)
。参见:
- Any downsides of using data type "text" for storing strings?
- Get sum of integers for UNIQUE ids
- What is the overhead for varchar(n)?
- Should I add an arbitrary length limit to VARCHAR columns?