pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
INSERT — 向一个表中插入新行
INSERT INTOtable[ (column[, ...] ) ] { VALUES (expression[, ...] ) | SELECTquery}
table一个已存在表的名称。
columntable中一个列的名称。
expression要赋予column的一个有效表达式或值。
query一个有效的查询。有效参数的进一步描述请参考 SELECT 语句。
INSERT oid 1只插入了一行时返回的消息。→ 是被插入行的数字 OID。oid
INSERT 0 #插入了多行时返回的消息。→ 是插入的行数。#
INSERT允许我们向一个类或表中插入新行。可以一次插入一行,也可以插入一个查询结果的多个行。目标列表中的列可以按任意顺序列出。
目标列表中没有出现的每个列将使用默认值插入,即声明的 DEFAULT 值或 NULL。如果向声明为 NOT NULL 的列插入 NULL,Postgres将拒绝这个新列。
如果每个列的表达式数据类型不正确,将尝试自动类型强制转换。
要向一个表追加数据,你必须拥有该表上的 insert 权限,并且对 WHERE 子句中指定的任何表拥有 select 权限。
向表 films 插入一行:
INSERT INTO films VALUES
('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute');
在第二个例子中,列 date_prod 被省略,因此它将使用默认值 NULL:
INSERT INTO films (code, title, did, date_prod, kind)
VALUES ('T_601', 'Yojimbo', 106, DATE '1961-06-16', 'Drama');
向表 distributors 插入一行;注意只指定了列 name,因此被省略的列 did 将被赋予其默认值:
INSERT INTO distributors (name) VALUES ('British Lion');
从表 tmp 向表 films 插入若干行:
INSERT INTO films SELECT * FROM tmp;
插入数组(关于数组的更多信息请参考PostgreSQL User's Guide):
-- Create an empty 3x3 gameboard for noughts-and-crosses
-- (all of these queries create the same board attribute)
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与SQL92完全兼容。query子句特性方面可能存在的限制记录在 SELECT 中。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。