| PostgreSQL | ||
|---|---|---|
| 上一页 | 下一页 | |
INSERT — 向表中插入新行
INSERT INTO table [ ( column [, ...] ) ]
{ VALUES ( expression [, ...] ) | SELECT query }
INSERT 允许我们向表中插入新行.我们可以一次插入一行或作为查询结果的多行.目标列表中的列/字段可以按任何顺序排列.
在目标列中没有出现的列/字段将插入缺省值,要么是定义了的 DEFAULT 值或者 NULL。如果向定义为 NOT NULL 的列中插入 NULL 值,Postgres 将拒绝新列。
如果每行的表达式不是正确的数据类型,将试图进行自动的类型转换.
要想向表中插入数据,你必须有插入权限,同样也要有选择权限用于处理 WHERE 子句里声明的任何表。
向表 films 里插入一行:
INSERT INTO films VALUES
('UA502','Bananas',105,'1971-07-13','Comedy',INTERVAL '82 minute');
在第二个例子里面省略了字段 date_prod (译注:原文错,应为字段 len)因此在它里面将只存储缺省的 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用户手册 获取关于数组的更多信息):
-- 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 语句中有相关文档.
| 上一页 | 首页 | 下一页 |
| GRANT | 开头 | LISTEN |