回答:
TRUNCATE TABLE
コマンドを使用します。
PostgreSQLデータベースのテーブル/テーブルのコンテンツは、いくつかの方法で削除できます。
SQLを使用したテーブルコンテンツの削除:
1つのテーブルのコンテンツを削除する:
TRUNCATE table_name;
DELETE FROM table_name;
すべての名前付きテーブルのコンテンツを削除します:
TRUNCATE table_a, table_b, …, table_z;
名前付きテーブルとそれらを参照するテーブルのコンテンツの削除(この回答の後半で詳しく説明します):
TRUNCATE table_a, table_b CASCADE;
pgAdminを使用したテーブルコンテンツの削除:
1つのテーブルのコンテンツを削除する:
Right click on the table -> Truncate
テーブルとそれを参照するテーブルのコンテンツを削除する:
Right click on the table -> Truncate Cascaded
削除と切り捨ての違い:
ドキュメントから:
DELETEは、WHERE句を満たす行を指定されたテーブルから削除します。WHERE句がない場合は、テーブル内のすべての行が削除されます。 http://www.postgresql.org/docs/9.3/static/sql-delete.html
TRUNCATEは、テーブルからすべての行を削除するためのより高速なメカニズムを提供するPostgreSQLの拡張機能です。TRUNCATEは、一連のテーブルからすべての行をすばやく削除します。各テーブルで非修飾DELETEと同じ効果がありますが、実際にはテーブルをスキャンしないため、高速です。さらに、後続のVACUUM操作を必要とせずに、ディスク領域をすぐに再利用します。これは、大きなテーブルで最も役立ちます。 http://www.postgresql.org/docs/9.1/static/sql-truncate.html
他のテーブルから参照されているテーブルの操作:
複数のテーブルを持つデータベースがある場合、テーブルにはおそらく関係があります。例として、3つのテーブルがあります。
create table customers (
customer_id int not null,
name varchar(20),
surname varchar(30),
constraint pk_customer primary key (customer_id)
);
create table orders (
order_id int not null,
number int not null,
customer_id int not null,
constraint pk_order primary key (order_id),
constraint fk_customer foreign key (customer_id) references customers(customer_id)
);
create table loyalty_cards (
card_id int not null,
card_number varchar(10) not null,
customer_id int not null,
constraint pk_card primary key (card_id),
constraint fk_customer foreign key (customer_id) references customers(customer_id)
);
そして、これらのテーブルのいくつかの準備されたデータ:
insert into customers values (1, 'John', 'Smith');
insert into orders values
(10, 1000, 1),
(11, 1009, 1),
(12, 1010, 1);
insert into loyalty_cards values (100, 'A123456789', 1);
テーブル注文はテーブル顧客を参照し、テーブルloyalty_cardsはテーブル顧客を参照します。他のテーブルから参照されているテーブルをTRUNCATE / DELETEしようとすると(他のテーブルには指定されたテーブルへの外部キー制約があります)、エラーが発生します。3つのテーブルすべてからコンテンツを削除するには、これらすべてのテーブルに名前を付ける必要があります(順序は重要ではありません)。
TRUNCATE customers, loyalty_cards, orders;
または、CASCADEキーワードで参照されるテーブルのみ(1つだけではなく、より多くのテーブルに名前を付けることができます)
TRUNCATE customers CASCADE;
同じことがpgAdminにも当てはまります。Customersテーブルを右クリックして、Truncate Cascadedを選択します。
TRUNCATE
ANSI SQLの一部であり、すべての DBMSでサポートされています。私はリンクをたどりました、そして、ドキュメントは拡張について何も述べていません。おそらくリンクが正しくないか、古くなっていますか?
以下のために小さなテーブルDELETE
速いことが多いです(重い同時負荷のために)あまり積極的で、ロックを必要とします:
DELETE FROM tbl;
WHERE
状態なし。
以下のために媒体や大きなテーブル、一緒に行くTRUNCATE tbl
@グレッグ投稿のように、。