Skip to main content

INSERT

使用 INSERT 命令将新行插入到现有表中。

info
  • 对于带有主键的表,如果插入带有键的行,新行将覆盖现有行。

  • INSERT 后调用 FLUSH ,可保存更改到存储,确保更改已提交并可在后续读取中查看。

句法

INSERT INTO table_name [ ( col_name [ , ... ] ) ]
{ VALUES ( value [ , ... ] ) [ , ( ... ) ] | select_query }
[ RETURNING col_name ];

参数

参数或子句描述
table_name要插入行的表。
col_name要插入相应值的列。
目前,必须按顺序提供表中的所有列,或者将此字段留空。
value要分配给相应列的表达式或值。
可以使用 DESCRIBE 来检查表中列的顺序。
select_query返回要插入到表中的行的 SELECT 语句。
RETURNING根据插入的每一行返回任意列的值。

示例

taxi_trips 有三列:

{
"id": INT NOT NULL,
"distance": DOUBLE PRECISION NOT NULL,
"city": VARCHAR
}

以下语句可向 taxi_trips 中插入四行新数据。

INSERT INTO taxi_trips 
VALUES
(1,16,'Dallas'),
(2,23,'New York'),
(3,6,'Chicago'),
(4,9,NULL);

让我们查询该表。

SELECT * FROM taxi_trips ORDER BY id;
 id | distance |   city   
----+----------+----------
1 | 16 | Dallas
2 | 23 | New York
3 | 6 | Chicago
4 | 9 |

以下语句可将另一个名为 taxi_trips_new 的表中的所有行插入到 taxi_trips 中。这两个表有相同的列设置。该语句也会返回已插入行的 id 值。

INSERT INTO taxi_trips 
SELECT * FROM taxi_trips_new
RETURNING id;