↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本PostgreSQL 7.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

INSERT

INSERT — 在一个表中创建新行

大纲

INSERT INTO table [ ( column [, ...] ) ]
    { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) | query }

描述

INSERT允许我们向一个表中插入新行。可以一次插入一行,也可以插入一个查询结果的多个行。

目标列表中的列可以按任意顺序列出。目标列表中没有出现的每个列将使用默认值插入,即其声明的默认值或空值。

如果每个列的表达式数据类型不正确,将尝试自动类型转换。

要向一个表插入数据,你必须拥有该表上的INSERT权限。如果使用 query子句插入来自查询的行,你还需要拥有查询中使用的任何表上的SELECT权限。

参数

table

一个已存在表的名称(可以有模式限定)。

column

table中一个列的名称。

DEFAULT VALUES

所有列都将用它们的默认值填充。

expression

要赋予column的一个表达式或值。

DEFAULT

该列将用它的默认值填充。

query

提供要插入行的查询(SELECT语句)。其语法的描述请参考 SELECT语句。

输出

成功完成时,INSERT命令返回如下形式的命令标签

INSERT oid count

其中count是插入的行数。如果 count恰好为一,并且目标表有 OID,那么oid就是分配给被插入行的 OID。否则oid为零。

示例

向表 films 插入一行:

INSERT INTO films VALUES
    ('UA502', 'Bananas', 105, '1971-07-13', 'Comedy', '82 minutes');

在第二个例子中,省略了最后一列 len,因此它将使用默认值空值:

INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, '1961-06-16', 'Drama');

第三个例子对日期列使用 DEFAULT 子句而不是指定一个值:

INSERT INTO films VALUES
    ('UA502', 'Bananas', 105, DEFAULT, 'Comedy', '82 minutes');
INSERT INTO films (code, title, did, date_prod, kind)
    VALUES ('T_601', 'Yojimbo', 106, DEFAULT, 'Drama');

这个例子从表 tmp 向表 films 插入若干行:

INSERT INTO films SELECT * FROM tmp;

这个例子向数组列插入数据:

-- Create an empty 3x3 gameboard for noughts-and-crosses
-- (all of these commands create the same board)
INSERT INTO tictactoe (game, board[1:3][1:3])
    VALUES (1,'{{"","",""},{},{"",""}}');
INSERT INTO tictactoe (game, board[3][3])
    VALUES (2,'{}');
INSERT INTO tictactoe (game, board)
    VALUES (3,'{{,,},{,,},{,,}}');

兼容性

INSERT完全符合 SQL 标准。query子句可能存在的限制记录在 SELECT中。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。