PostgreSQL에서 모든 테이블 행 삭제

Bilal Shahid 2023년6월20일
  1. PostgreSQL에서 TRUNCATE 명령을 사용하여 모든 행 삭제
  2. PostgreSQL에서 DELETE 명령을 사용하여 모든 행 삭제
  3. pgAdmin을 사용하여 PostgreSQL의 모든 행 삭제
  4. PostgreSQL에서 참조 테이블의 모든 행 삭제
PostgreSQL에서 모든 테이블 행 삭제

당면한 문제는 테이블에서 모든 행 또는 튜플을 삭제하지만 테이블 자체는 삭제하지 않는 것입니다. 즉, 테이블의 모든 데이터가 지워지고 비워집니다.

PostgreSQL에는 이를 수행할 수 있는 세 가지 방법이 있습니다. 그들 모두를 하나씩 논의합시다.

PostgreSQL에서 TRUNCATE 명령을 사용하여 모든 행 삭제

TRUNCATE 명령은 스캔하지 않고 테이블의 모든 데이터를 비우므로 더 빠르고 더 큰 테이블에 더 적합합니다. TRUNCATE 명령을 사용하여 모든 행을 삭제하는 구문을 살펴보겠습니다.

TRUNCATE table_name;

사용법을 설명하기 위해 다음과 같이 샘플 데이터베이스와 테이블을 살펴보겠습니다.

create table my_table (
id int not null,
name varchar(30) not null,
constraint pk_student primary key (id)
);

insert into my_table values (1, First), (2, Second), (3, Third);

my_table의 상태는 이 문을 사용하여 표시할 수 있습니다.

Select * from my_table;

그러면 다음 테이블이 반환됩니다.

Postgres Delete All Rows Using TRUNCATE - 출력 1

이제 다음과 같이 TRUNCATE 명령을 실행하여 삽입된 모든 행을 삭제하겠습니다.

TRUNCATE my_table;

이 명령을 실행한 후 테이블의 모든 행을 선택하면 빈 테이블이 표시됩니다.

TRUNCATE를 사용하여 Postgres 모든 행 삭제 - 출력 2

이는 테이블의 모든 행이 삭제되었음을 나타냅니다.

TRUNCATE 명령을 사용하여 여러 테이블을 동시에 비우거나 지울 수도 있습니다. 이에 대한 구문은 다음과 같습니다.

TRUNCATE table1, table2, , table3;

이제 테이블에서 모든 행을 삭제하는 두 번째 방법을 살펴보겠습니다.

PostgreSQL에서 DELETE 명령을 사용하여 모든 행 삭제

DELETE 명령은 주로 특정 조건을 따르는 테이블에서 특정 행을 삭제하는 데 사용됩니다. 예를 들어 위의 my_table에서 다음과 같이 DELETE 명령을 사용하여 특정 행을 삭제할 수 있습니다.

DELETE FROM my_table WHERE id = 1;

DELETE 명령을 사용하여 모든 행을 삭제하는 조건을 지정할 수 없습니다. 이 명령을 실행하면 모든 행이 삭제되므로 빈 테이블이 됩니다.

구문은 다음과 같습니다.

DELETE FROM table_name;

샘플 테이블 my_table에서 이 명령을 사용하겠습니다.

DELETE FROM my_table;

이 명령을 실행한 후 select * from my_table;을 사용하여 테이블을 나열하면 다음과 같이 빈 테이블을 생성합니다.

Postgres Delete All Rows Using DELETE - 출력

DELETE 명령은 DELETE가 조건에 대한 모든 테이블 행을 스캔하고 개별적으로 삭제하기 때문에 TRUNCATE보다 느립니다. 따라서 더 큰 테이블 크기에는 DELETE가 권장되지 않습니다.

pgAdmin을 사용하여 PostgreSQL의 모든 행 삭제

테이블에서 모든 행을 삭제하는 또 다른 방법은 pgAdmin 도구를 직접 사용하여 데이터베이스를 조작하는 것입니다. 아래 설명된 단계에 따라 이를 사용할 수 있습니다.

pgAdmin에서 다음 이미지와 같이 왼쪽에 있는 브라우저에서 데이터베이스를 엽니다.

브라우저

스키마 옵션을 클릭합니다.

스키마

드롭다운 목록에서 삭제할 행이 있는 테이블을 마우스 오른쪽 버튼으로 클릭합니다. 일부 옵션은 다음과 같이 표시됩니다.

옵션

자르기 옵션을 클릭합니다. 사용 가능한 옵션 중에서 잘라내기를 다시 클릭합니다.

자르기

이제 모든 테이블 행을 나열하면 잘림이 작동했음을 확인하는 빈 테이블이 표시됩니다.

PostgreSQL에서 참조 테이블의 모든 행 삭제

테이블에서 모든 행을 삭제하려면 다른 테이블에서 참조되는 행이 있는지 기억해야 합니다. 일부 속성이 다른 테이블의 외래 키인 경우 잘림 중에 효과가 연속되어야 합니다.

그렇지 않으면 외래 키 제약 조건 위반 오류가 발생합니다. 다음 두 표의 예를 사용하여 이를 설명하겠습니다.

create table student (
id int not null,
name varchar(30) not null,
constraint pk_student primary key (id)
);

create table grades (
student_id int not null,
grade varchar(1) not null,
course varchar(30) not null,
constraint pk_grades primary key (student_id, course),
constraint fk_grades foreign key (student_id) references student(id)
);

grades 테이블이 student 테이블의 한 속성을 참조하는 것을 볼 수 있습니다. 이제 이 테이블을 몇 가지 데이터로 채웁니다.

insert into student values (1, 'First'), (2, 'Second');
insert into grades values (1, A, 'Database Systems'), (1, B, 'Programming Fundamentals'), (2, B, 'Database Systems');

student 테이블에서 모든 행을 삭제하려면 student 테이블을 참조하기 때문에 grades 테이블에서도 행을 삭제해야 합니다. 이렇게 하려면 다음과 같이 두 테이블 모두에서 TRUNCATE 명령을 사용할 수 있습니다.

TRUNCATE student, grades;

또는 다음과 같은 방법으로 TRUNCATE 다음에 CASCADE 키워드를 사용할 수 있습니다.

TRUNCATE student CASCADE;

CASCADE 키워드는 student 테이블(이 경우 grades 테이블)에 대한 외래 키 참조가 있는 테이블에서 모든 행도 삭제합니다.

계단식 자르기를 수행하는 또 다른 방법은 pgAdmin 도구를 사용하는 것입니다. 이는 다음과 같은 간단한 단계를 통해 수행할 수 있습니다.

먼저 왼쪽의 브라우저로 이동하고 앞에서 설명한 단계에 따라 테이블로 이동합니다. 이제 테이블을 마우스 오른쪽 버튼으로 클릭하십시오. 다음 옵션이 표시됩니다.

옵션

여기에서 잘라내기 옵션을 선택합니다. 다음을 나열합니다.

자르기

캐스케이드 자르기를 클릭합니다. 이렇게 하면 선택한 테이블의 모든 행과 이를 참조하는 외래 키가 있는 테이블이 삭제됩니다.

이것은 PostgreSQL의 테이블에서 모든 행을 삭제하는 다양한 방법을 요약한 것입니다. 모든 행을 삭제하기 위한 DELETETRUNCATE 명령과 그렇게 할 수 있는 몇 가지 pgAdmin 도구의 사용법을 배웠기를 바랍니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - PostgreSQL Table