本文介绍在AnalyticDB for PostgreSQL数据库中,如何插入、更新、删除数据。

插入行(INSERT)

使用 INSERT命令在一个表中插入行。命令格式如下:
INSERT INTO table [( column [, ...] )]
   {DEFAULT VALUES | VALUES ( {expression | DEFAULT} [, ...] ) 
   [, ...] | query}

更多信息请参考INSERT

示例:

插入单行数据。
INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);
在一条命令中插入多行数据。
INSERT INTO products (product_no, name, price) VALUES
    (1, 'Cheese', 9.99),
    (2, 'Bread', 1.99),
    (3, 'Milk', 2.99);
使用标量表达式插入数据。
INSERT INTO films SELECT * FROM tmp_films WHERE date_prod < 
'2016-05-07';
说明 如果要插入大量数据,推荐使用外部表或者COPY命令,比INSERT性能好。

更新行(UPDATE)

使用 UPDATE命令在一个表中更新行。命令格式如下:
UPDATE [ONLY] table [[AS] alias]
   SET {column = {expression | DEFAULT} |
   (column [, ...]) = ({expression | DEFAULT} [, ...])} [, ...]
   [FROM fromlist]
   [WHERE condition | WHERE CURRENT OF cursor_name ]

更多信息请参考UPDATE

使用限制:

  • 分布键列不能被更新。
  • 分区键列不能被更新。
  • 不能在UPDATE语句中使用STABLE或VOLATILE函数。
  • 不支持RETURNING子句。

示例:

将所有价格为5的产品更新价格为10。
UPDATE products SET price = 10 WHERE price = 5;

删除行(DELETE)

使用 DELETE命令从一个表中删除行。命令格式如下:
DELETE FROM [ONLY] table [[AS] alias]
      [USING usinglist]
      [WHERE condition | WHERE CURRENT OF cursor_name ]

更多信息请参考DELETE

使用限制:

  • 不能在DELETE语句中使用STABLE或VOLATILE函数。
  • 不支持RETURNING子句。

示例:

从产品表中删除所有价格为10的行。
DELETE FROM products WHERE price = 10;
从表中删除所有行。
DELETE FROM products;

截断表(TRUNCATE)

使用 TRUNCATE命令可以快速地移除一个表中的所有行。命令格式如下:
TRUNCATE [TABLE] name [, ...] [CASCADE | RESTRICT]

更多信息请参考TRUNCATE

示例:

清空mytable表中的所有行,TRUNCATE不扫描该表,因此它不会处理继承的子表或者ON DELETE的重写规则,只会截断命令中的表中的行。

TRUNCATE mytable;