受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

2.3. 创建一个新表 #

你可以通过指定表名以及各列的列名和类型来创建一个新表:

CREATE TABLE weather (
    city            varchar(80),
    temp_lo         int,           -- low temperature
    temp_hi         int,           -- high temperature
    prcp            real,          -- precipitation
    date            date
);

你可以在psql中按这种换行格式输入该命令。 psql会识别出该命令在分号出现之前尚未结束。

在 SQL 命令中可以随意使用空白字符(即空格、制表符和换行符)。这意味着你可以按 与上面不同的方式对齐该命令,甚至把它全部写在一行上。两个连字符 (--)表示注释。从它们开始直到行尾的内容 都会被忽略。SQL 对关键字和标识符不区分大小写,除非用双引号括起标识符以保留 大小写(上面的例子没有这么做)。

varchar(80)指定一种数据类型,它可以存储长度不超过 80 个字符的任意字符串。 int是普通的整数类型。real是一种用于存储单精度浮点数的 类型。date应当不言自明。(是的,类型为date的列也叫 date。这可能方便,也可能令人困惑 — 由你自己决定。)

PostgreSQL支持标准的SQL类型 intsmallintrealdouble precisionchar(N)varchar(N)datetimetimestampinterval,还支持 其他一些通用类型以及丰富的几何类型。PostgreSQL 可以通过任意数量的用户定义数据类型进行定制。因此,类型名在语法中并不是关键字, 只有在为了支持SQL标准中的特殊情况而必须如此时才是例外。

第二个示例将存储城市及其关联的地理位置:

CREATE TABLE cities (
    name            varchar(80),
    location        point
);

point类型就是PostgreSQL特有数据类型的一个例子。

最后还要提一句,如果你不再需要某个表,或者想用不同的定义重新创建它,可以使用 下面的命令把它移除:

DROP TABLE tablename;

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。