PostgreSQL에서 모든 테이블 행 삭제
-
PostgreSQL에서
TRUNCATE
명령을 사용하여 모든 행 삭제 -
PostgreSQL에서
DELETE
명령을 사용하여 모든 행 삭제 -
pgAdmin
을 사용하여 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;
그러면 다음 테이블이 반환됩니다.
이제 다음과 같이 TRUNCATE
명령을 실행하여 삽입된 모든 행을 삭제하겠습니다.
TRUNCATE my_table;
이 명령을 실행한 후 테이블의 모든 행을 선택하면 빈 테이블이 표시됩니다.
이는 테이블의 모든 행이 삭제되었음을 나타냅니다.
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;
을 사용하여 테이블을 나열하면 다음과 같이 빈 테이블을 생성합니다.
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의 테이블에서 모든 행을 삭제하는 다양한 방법을 요약한 것입니다. 모든 행을 삭제하기 위한 DELETE
및 TRUNCATE
명령과 그렇게 할 수 있는 몇 가지 pgAdmin
도구의 사용법을 배웠기를 바랍니다.
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