SYNOPSIS
INSERT INTO table [ ( column [, ...] ) ]
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) | query }
DESCRIPTION 描述
INSERT 允许我们向表中插入新行。 我们可以一次插入一行或多行作为查询结果。
目标列表中的列/字段可以按任何顺序排列。 在目标列中没有出现的列/字段将插入缺省值, 可能是定义了的缺省值或者 NULL。
如果每行的表达式不是正确的数据类型,系统将试图进行自动的类型转换。
要想向表中插入数据,你必须有 INSERT 权限, 如果你使用了 query 子句插入来自查询里的数据行, 你还需要拥有在查询里使用的表的 SELECT 权限。
PARAMETERS 参数
- table
- 现存表的名称(可以有模式修饰)。
- column
- 表 table 中的字段名。
- DEFAULT VALUES
- 所有字段都会用它们的缺省值填充。
- expression
- 赋予 column 的一个有效表达式或值。
- DEFAULT
- 这个字段将被字段它的填充。
- query
- 一个查询(SELECT 语句),它提供插入的数据行。 请参考 SELECT 语句获取语法描述。
OUTPUTS 输出
成功完成后,一条 INSERT 命令返回一个下面形式的命令标签
INSERT oid count
count 是插入的行数。 如果 count 正好是一,并且目标表有 OID, 那么 oid 是赋予插入行的 OID。 否则 oid 是零。
EXAMPLES 例子
向表 films 里插入一行:
INSERT INTO films VALUES
('UA502', 'Bananas', 105, '1971-07-13', 'Comedy', '82 minutes');
在第二个例子里面省略了字段 len 因此在它里面将只存储缺省的 NULL 值:
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;
插入数组:
-- 创建一个空的 3x3 游戏板来玩圈-和-叉游戏
-- (所有这些查询创建相同的游戏)
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,'{{,,},{,,},{,,}}');