このトピックでは、DMLを使用してAnalyticDB for PostgreSQLのデータを挿入、更新、および削除する方法について説明します。
データの挿入
大量のデータを挿入する場合は、insertステートメントよりも優れたパフォーマンスを得るために、外部テーブルを使用するか、COPYステートメントを実行することをお勧めします。
INSERT文を実行して、1つ以上の行をテーブルに挿入できます。 構文:
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ステートメントを実行して、テーブル内の1つ以上の行を更新できます。 構文:
UPDATE [ONLY] table [[AS] alias]
SET {column = {expression | DEFAULT} |
(column [, ...]) = ({expression | DEFAULT} [, ...])} [, ...]
[FROM fromlist]
[WHERE condition | WHERE CURRENT OF cursor_name ]制約条件
配布キーとして定義されている列は更新できません。
パーティションキーとして定義されている列は更新できません。
STABLEおよびVOLATILE機能は使用できません。
RETURNING句は使用できません。
例
次のステートメントを実行して、price列の値が5から10の行を変更します。
UPDATE products SET price = 10 WHERE price = 5;データの削除
DELETEステートメントを実行して、テーブルから1つ以上の行を削除できます。 構文:
DELETE FROM [ONLY] table [[AS] alias]
[USING usinglist]
[WHERE condition | WHERE CURRENT OF cursor_name ]制約条件
STABLEおよびVOLATILE機能は使用できません。
RETURNING句は使用できません。
例
次のステートメントを実行して、price列の値が10であるすべての行を削除します。
DELETE FROM products WHERE price = 10;次の文を実行して、テーブルからすべての行を削除します。
DELETE FROM products;データの切り捨て
TRUNCATEステートメントを実行すると、テーブルからすべての行をすばやく削除できます。 truncate操作では、テーブルがスキャンされず、テーブル内の行のみが切り捨てられるため、テーブルおよびON DELETE句の書き換えルールから継承されたテーブルは切り捨てられません。 構文:
TRUNCATE [TABLE] name [, ...] [CASCADE | RESTRICT]例
次のステートメントを実行して、mytableという名前のテーブルからすべての行を削除します。
TRUNCATE mytable;