すべてのプロダクト
Search
ドキュメントセンター

PolarDB:TRUNCATE TABLE

最終更新日:Oct 21, 2024

TRUNCATE TABLEコマンドは、テーブル全体とテーブルに格納されているデータを削除します。

構文の概要

TRUNCATE TABLEコマンドを使用して、テーブルの内容を削除できます。 コマンドはテーブル定義を保持します。 テーブルを切り捨てると、テーブルのすべてのパーティションとサブパーティションも切り詰められます。 次の構文が提供されます。

TRUNCATE TABLE table_name;

概要

TRUNCATE TABLEコマンドは、テーブル全体とテーブルに格納されているデータを削除します。 テーブルを削除すると、テーブルのすべてのパーティションとサブパーティションも削除されます。

TRUNCATE TABLEコマンドを使用するには、パーティションルートの所有者、テーブルを所有するグループのメンバー、スキーマの所有者、またはデータベースのスーパーユーザーであることを確認します。

パラメーター

パラメーター

説明

テーブル名

パーティションテーブルの名前 (オプションでスキーマ修飾) 。

例-テーブルを空にする

次の例では、salesテーブルからデータを削除します。 次のコマンドを実行して、salesテーブルを作成します。

CREATE TABLE sales
(
  dept_no     number,   
  part_no     varchar2,
  country     varchar2(20),
  date    date,
  amount  number
)
PARTITION BY LIST(country)
(
  PARTITION europe VALUES('FRANCE', 'ITALY'),
  PARTITION asia VALUES('INDIA', 'PAKISTAN'),
  PARTITION americas VALUES('US', 'CANADA')
);

次のコマンドを実行して、salesテーブルに値を追加します。

INSERT INTO sales VALUES
(10, '4519b', 'FRANCE', '17-Jan-2012', '45000'),
(20, '3788a', 'INDIA', '01-Mar-2012', '75000'),
(40, '9519b', 'US', '12-Apr-2012', '145000'),
(20, '3788a', 'PAKISTAN', '04-Jun-2012', '37500'),
(40, '4577b', 'US', '11-Nov-2012', '25000'),
(30, '7588b', 'CANADA', '14-Dec-2012', '50000'),
(30, '9519b', 'CANADA', '01-Feb-2012', '75000'),
(30, '4519b', 'CANADA', '08-Apr-2012', '120000'),
(40, '3788a', 'US', '12-May-2012', '4950'),
(10, '9519b', 'ITALY', '07-Jul-2012', '15000'),
(10, '9519a', 'FRANCE', '18-Aug-2012', '650000'),
(10, '9519b', 'FRANCE', '18-Aug-2012', '650000'),
(20, '3788b', 'INDIA', '21-Sept-2012', '5090'),
(40, '4788a', 'US', '23-Sept-2012', '4950'),
(40, '4788b', 'US', '09-Oct-2012', '15000'),
(20, '4519a', 'INDIA', '18-Oct-2012', '650000'),
(20, '4519b', 'INDIA', '2-Dec-2012', '5090');

セールステーブルを照会して、パーティションにデータが入力されていることを確認できます。

acctg=# SELECT tableoid::regclass, * FROM sales;
   tableoid   |dept_no | part_no | country  |        date        | amount 
--------------+--------+---------+----------+--------------------+-----------
sales_europe  |     10 | 4519b   | FRANCE   | 17-JAN-12 00:00:00 |     45000
sales_europe  |     10 | 9519b   | ITALY    | 07-JUL-12 00:00:00 |     15000
sales_europe  |     10 | 9519a   | FRANCE   | 18-AUG-12 00:00:00 |    650000
 sales_europe |     10 | 9519b   | FRANCE   | 18-AUG-12 00:00:00 |    650000
sales_asia    |     20 | 3788a   | INDIA    | 01-MAR-12 00:00:00 |     75000
sales_asia    |     20 | 3788a   | PAKISTAN | 04-JUN-12 00:00:00 |     37500
sales_asia    |     20 | 3788b   | INDIA    | 21-SEP-12 00:00:00 |      5090
sales_asia    |     20 | 4519a   | INDIA    | 18-OCT-12 00:00:00 |    650000
sales_asia    |     20 | 4519b   | INDIA    | 02-DEC-12 00:00:00 |      5090
sales_americas|     40 | 9519b   | US       | 12-APR-12 00:00:00 |    145000
sales_americas|     40 | 4577b   | US       | 11-NOV-12 00:00:00 |     25000
sales_americas|     30 | 7588b   | CANADA   | 14-DEC-12 00:00:00 |     50000
sales_americas|     30 | 9519b   | CANADA   | 01-FEB-12 00:00:00 |     75000
sales_americas|     30 | 4519b   | CANADA   | 08-APR-12 00:00:00 |    120000
sales_americas|     40 | 3788a   | US       | 12-MAY-12 00:00:00 |      4950
sales_americas|     40 | 4788a   | US       | 23-SEP-12 00:00:00 |      4950
sales_americas|     40 | 4788b   | US       | 09-OCT-12 00:00:00 |     15000
(17 rows)

salesテーブルの内容を削除するには、次のコマンドを実行します。

TRUNCATE TABLE sales; 

salesテーブルをクエリすると、クエリ結果はデータが削除されたことを示しますが、テーブルスキーマはそのままです:

acctg=# SELECT tableoid::regclass, * FROM sales;
 tableoid | dept_no | part_no | country |   date   | amount 
----------+---------+---------+---------+----------+------------
(0 rows)