pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
INSERT — 在一个表中创建新行
INSERT INTOtable[ (column[, ...] ) ] { DEFAULT VALUES | VALUES ( {expression| DEFAULT } [, ...] ) |query}
INSERT允许我们向一个表中插入新行。可以一次插入一行,也可以插入一个查询结果的多个行。
目标列表中的列可以按任意顺序列出。目标列表中没有出现的每个列将使用默认值插入,即其声明的默认值或空值。
如果每个列的表达式数据类型不正确,将尝试自动类型转换。
要向一个表插入数据,你必须拥有该表上的INSERT权限。如果使用 query子句插入来自查询的行,你还需要拥有查询中使用的任何表上的SELECT权限。
table一个已存在表的名称(可以有模式限定)。
columntable中一个列的名称。
DEFAULT VALUES所有列都将用它们的默认值填充。
expression要赋予column的一个表达式或值。
DEFAULT该列将用它的默认值填充。
query提供要插入行的查询(SELECT语句)。其语法的描述请参考 SELECT语句。
成功完成时,INSERT命令返回如下形式的命令标签
INSERToidcount
其中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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。