本文介绍在AnalyticDB PostgreSQL数据库中,如何使用DML语法插入、更新、删除数据。
插入行(INSERT)
说明
如果要插入大量数据,推荐使用外部表或者COPY命令,相比INSERT性能更好。
使用INSERT
命令在一个表中插入行。语法如下:
INSERT INTO table [( column [, ...] )]
{DEFAULT VALUES | VALUES ( {expression | DEFAULT} [, ...] )
[, ...] | query}
示例:
插入单行数据。
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';
更新行(UPDATE)
使用UPDATE
命令在一个表中更新行。语法如下:
UPDATE [ONLY] table [[AS] alias]
SET {column = {expression | DEFAULT} |
(column [, ...]) = ({expression | DEFAULT} [, ...])} [, ...]
[FROM fromlist]
[WHERE condition | WHERE CURRENT OF cursor_name ]
使用限制:
分布键列不能被更新。
分区键列不能被更新。
不能在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语句中使用STABLE或VOLATILE函数。
不支持RETURNING子句。
示例:
从产品表中删除所有价格为10的行。
DELETE FROM products WHERE price = 10;
从表中删除所有行。
DELETE FROM products;
截断表(TRUNCATE)
使用TRUNCATE
命令可以快速地移除一个表中的所有行,TRUNCATE不扫描该表,因此它不会处理继承的子表或者ON DELETE的重写规则,只会截断命令中的表中的行。语法如下:
TRUNCATE [TABLE] name [, ...] [CASCADE | RESTRICT]
示例:
清空mytable表中的所有行。
TRUNCATE mytable;
文档内容是否对您有帮助?