发布网友 发布时间:2024-10-24 08:56
共1个回答
热心网友 时间:2024-11-01 09:29
PostgreSQL 提供了多种复制表的方法,具体差异在于是否包含表结构或数据。
使用 CREATE TABLE AS SELECT 语句复制表结构和数据,但不会复制索引。
例如,基于 employee 复制一个新表 emp2,包括数据的语句为:
若仅需复制表结构而不复制数据,可添加 WITH NO DATA 子句。
或使用不返回结果的查询语句。
此方法不会创建索引或约束,如主键、外键和 NOT NULL 约束。
使用 CREATE TABLE LIKE 语句复制表结构,但不会复制数据,且会复制 NOT NULL 约束。
CREATE TABLE AS TABLE 语句可复制表结构和数据,不过不会复制索引、外键和非空约束。
若不需复制数据,可使用 WITH NO DATA 子句。
SELECT INTO 语句可复制表结构和数据,但不含索引。
推荐使用 CREATE TABLE AS 替代 SELECT INTO 语句,因其适用性更广,功能更全面。
使用 CREATE TABLE INHERITS 语句复制表结构,允许继承父表结构。
此方法可为子表定义额外字段,如:
其中,notes 是额外定义的字段,其他字段继承自 employee。
使用 psql \d 命令查看 emp5 结构如下: