programing

PostgreSQL 모든 내용 삭제

muds 2023. 5. 21. 12:03
반응형

PostgreSQL 모든 내용 삭제

안녕하세요. postgresql 테이블의 모든 데이터를 삭제하고 싶지만 테이블 자체는 삭제하지 않습니다.어떻게 이럴 수 있죠?

명령을 사용합니다.

Postgre의 표/표 내용SQL 데이터베이스는 여러 가지 방법으로 삭제할 수 있습니다.

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

자르기는 포스트그리입니다.테이블에서 모든 행을 제거하는 더 빠른 메커니즘을 제공하는 SQL 확장입니다. TRUNCATE는 테이블 집합에서 모든 행을 빠르게 제거합니다.각 테이블에서 정규화되지 않은 DELETE와 동일한 효과를 가지지만 실제로 테이블을 스캔하지 않기 때문에 더 빠릅니다.또한 이후 진공 작업을 수행할 필요 없이 디스크 공간을 즉시 회수합니다.이것은 큰 테이블에서 가장 유용합니다.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);

테이블 주문은 테이블 고객을 참조하고 테이블 로열티_cards는 테이블 고객을 참조합니다.다른 테이블에서 참조하는 테이블(다른 테이블/s에 명명된 테이블에 대한 외부 키 제약 조건이 있음)을 잘라내거나 테이블에서 삭제하려고 하면 오류가 발생합니다.세 개의 표에서 내용을 모두 삭제하려면 이 표의 이름을 모두 지정해야 합니다(순서는 중요하지 않습니다).

TRUNCATE customers, loyalty_cards, orders;

또는 CASCADE 키워드로 참조되는 테이블만(하나 이상의 테이블 이름을 지정할 수 있음)

TRUNCATE customers CASCADE;

pgAdmin도 마찬가지입니다.고객 테이블을 마우스 오른쪽 단추로 클릭하고 계단식 잘라내기를 선택합니다.

작은 테이블의 경우 종종 속도가 더 빠르고 덜 적극적인 잠금이 필요합니다(동시 부하에 중요).

DELETE FROM tbl;

없음WHERE조건.

중간 또는 더 큰 테이블의 경우, @Greg 게시된 것처럼 다음과 같이 진행합니다.

TRUNCATE tbl;

"작은"과 "큰" 사이의 선을 확정하기는 어렵습니다. 이는 많은 변수에 따라 다르기 때문입니다.설치 환경에서 테스트해야 합니다.

DBeaver와 같은 툴을 사용할 수 있는 모든 사용자를 위한 매우 쉽고 빠른 방법을 찾았습니다.잘라낼 테이블을 모두 선택하면 됩니다.SHIFT + click또는CTRL + click그 다음 ) 그때right click

여기에 이미지 설명 입력

외부 키가 있는 경우 항목을 선택합니다.CASCADE할 수 있습니다.Settings 넬판Start그게 전부야!

언급URL : https://stackoverflow.com/questions/13223820/postgresql-delete-all-content

반응형