PostgreSQL은 모든 콘텐츠를 삭제합니다.
안녕하세요, 내 postgresql 테이블의 모든 데이터를 삭제하고 싶지만 테이블 자체는 삭제하고 싶습니다. 어떻게 할 수 있습니까?
TRUNCATE TABLE
명령을 사용하십시오 .
PostgreSQL 데이터베이스의 테이블 / 테이블 내용은 여러 가지 방법으로 많이 있습니다.
SQL을 사용하여 테이블 콘텐츠 삭제 :
한 테이블의 내용 삭제 :
TRUNCATE table_name;
DELETE FROM table_name;
모든 명명 된 테이블의 내용 삭제 :
TRUNCATE table_a, table_b, …, table_z;
명명 된 테이블 및 테이블을 참조하는 테이블의 내용 삭제 (이 답변의 뒷부분에서 자세히 설명합니다) :
TRUNCATE table_a, table_b CASCADE;
pgAdmin을 사용하여 테이블 콘텐츠 삭제 :
한 테이블의 내용 삭제 :
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
다른 테이블에서 참조되는 테이블 작업 :
둘 이상의 테이블이있는 데이터베이스가있는 경우 테이블은 관계가있을 수 있습니다. 예를 들어 세 개의 테이블이 있습니다.
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하려고하면 (다른 테이블에 명명 된 테이블에 대한 외래 키 제약 조건이 있음) 오류가 발생합니다. 세 테이블 모두에서 콘텐츠를 삭제해야 할 모든 테이블의 이름을 지정해야합니다 (순서는 중요하지 않습니다).
TRUNCATE customers, loyalty_cards, orders;
또는 CASCADE 키워드로 참조되는 테이블 만 (하나 이상의 테이블 이름을 있음)
TRUNCATE customers CASCADE;
pgAdmin에도 동일하게 적용됩니다. customers 테이블을 마우스 오른쪽 버튼으로 클릭하고 Truncate Cascaded를 선택하십시오.
들어 작은 테이블 빠른 자주와 (무거운 동시 부하) 덜 공격적 잠금이 필요합니다 :DELETE
DELETE FROM tbl;
WHERE
조건 없이 .
들어 중간 또는 큰 테이블로 이동 TRUNCATE tbl
@Greg 게시처럼.
참고 URL : https://stackoverflow.com/questions/13223820/postgresql-delete-all-content
'IT' 카테고리의 다른 글
Bash의 HMAC-SHA1 (0) | 2020.09.13 |
---|---|
변수의 유형이 변수에 기록 유형과 일치하는지 확인하는 방법 (0) | 2020.09.13 |
IE11 문서 모드의 링크는 IE7입니다. (0) | 2020.09.13 |
DataGridView에서 현재 선택된 행의 등급 (0) | 2020.09.13 |
저장 프로 시저에서 새 가이드를 생성하는 방법은 무엇입니까? (0) | 2020.09.13 |