你可以通过指定表名以及所有字段列的名称和类型来创建一张新表:
CREATE TABLE weather (
city varchar(80),
temp_lo int, -- 最低气温
temp_hi int, -- 最高气温
prcp real, -- 降水量
date date
);
你可以在 psql 中直接换行输入上述内容。psql 会智能识别并在遇到分号(;)时判定命令结束并提交执行。
在 SQL 命令中可以自由使用空白字符(包括空格、制表符与换行符)。这意味着你可以采用任意喜欢的缩进排版,甚至将整条语句写在单行中。连续的两个连字符(“--”)代表单行注释,其后直至行尾的所有内容都将被解析器忽略。SQL 对于关键字与标识符默认是不区分大小写的,除非标识符使用双引号括起来以保留特定大小写(上述示例中未使用双引号)。
varchar(80) 指定了一个最长可容纳 80 个字符的变长字符串类型。int 是标准的普通整型。real 是用于存储单精度浮点数的类型。date 顾名思义是日期类型(是的,类型为 date 的列名也可以刚好命名为 date,这既可以说很直观,也可以说容易混淆,完全由你决定)。
PostgreSQL 完整支持标准 SQL 类型:int、smallint、real、double precision、char(、N)varchar(、N)date、time、timestamp 以及 interval,此外还提供了丰富的通用实用类型与空间几何类型。PostgreSQL 还支持用户按需自定义任意数量的新数据类型。因此在语法结构中,数据类型名称绝大多数都不是保留关键字,仅在满足特定 SQL 标准边界时才特殊处理。
第二个示例用于存储城市及其地理空间坐标:
CREATE TABLE cities (
name varchar(80),
location point
);
其中的 point 点类型是 PostgreSQL 特色的空间数据类型之一。
最后需要说明的是,如果你不再需要某张表,或者希望推倒重建,可以使用以下命令将其彻底删除:
DROP TABLE tablename;