본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

62강 SQL 초석 다지기 : PostgreSQL DROP COLUMN

by DoitSQL 2023. 1. 5.
728x90

PostgreSQL 기초강의, PostgreSQL 기초강좌, PostgreSQL 기본강의, PostgreSQL 기본강좌

62강 SQL 초석 다지기 : PostgreSQL DROP COLUMN  

 

SQL 초석 다지기 62강 시작합니다.

 

이번 시간에는

 PostgreSQL DROP COLUMN

에 대해서 알아보는 시간입니다.

 

요약: 이번 강의에서는 ALTER TABLE 문에서 PostgreSQL DROP COLUMN 절을 사용하여 테이블의 하나 이상의 열을 제거하는 방법을 보여줍니다.

 

지난 강의에서 열 추가를 배웠다면 이번 시간에는 열을 제거하는 방법을 배웁니다.


Introduction to PostgreSQL DROP COLUMN   

테이블의 열을 삭제하려면 ALTER TABLE 문에서 DROP COLUM 절을 다음과 같이 사용합니다.

ALTER TABLE table_name 
DROP COLUMN column_name;   

 

테이블에서 열을 제거하면 PostgreSQL은 삭제된 열과 관련된 모든 인덱스 및 제약 조건을 자동으로 제거합니다.

제거할 열이 views, triggers, stored procedures 등의 다른 데이터베이스 개체에 사용되는 경우 다른 개체가 종속되어 있으므로 열을 삭제할 수 없습니다. 이 경우 DROP COLUMN 절에 CASCAD 옵션을 추가하여 열과 모든 종속 개체를 삭제해야 합니다.

ALTER TABLE table_name 
DROP COLUMN column_name CASCADE;   

 

존재하지 않는 열을 제거하면 PostgreSQL에서 오류가 발생합니다. 열이 있는 경우에만 해당 열을 제거하려면 다음과 같이 IF EXISTS 옵션을 추가할 수 있습니다.

ALTER TABLE table_name 
DROP COLUMN IF EXISTS column_name;   

이 양식에서 존재하지 않는 열을 제거하면 PostgreSQL은 오류 대신 알림을 발행합니다.

 

단일 명령에 테이블의 여러 열을 삭제하려면 다음과 같이 여러 개의 DROP COLUMN 절을 사용합니다.

ALTER TABLE table_name
DROP COLUMN column_name1,
DROP COLUMN column_name2,
...;   

각 DROP COLUMN 절 뒤에 쉼표(,)를 추가해야 합니다.

테이블에 하나의 열이 있는 경우 ALTER TABLE Drop COLUMN 문을 사용하여 테이블을 삭제할 수 있습니다. 그러면 테이블에 열이 없습니다. PostgreSQL에서는 가능하지만 SQL 표준에서는 불가능합니다.


PostgreSQL DROP COLUMN examples   

ALTER TABLE DROP COLUMN 문이 어떻게 작동하는지 몇 가지 예를 살펴보겠습니다.

 

우리는 books, categories, 그리고 시연을 위한 publishers의 세 가지 테이블을 만들 것입니다.

이 다이어그램에서 각 책에는 하나의 출판사만 있고 각 출판사는 많은 책을 출판할 수 있습니다. 각 책은 카테고리에 할당되고 각 카테고리는 많은 책을 가질 수 있습니다.

다음 문은 세 개의 테이블을 만듭니다.

CREATE TABLE publishers (
    publisher_id serial PRIMARY KEY,
    name VARCHAR NOT NULL
);

CREATE TABLE categories (
    category_id serial PRIMARY KEY,
    name VARCHAR NOT NULL
);

CREATE TABLE books (
    book_id serial PRIMARY KEY,
    title VARCHAR NOT NULL,
    isbn VARCHAR NOT NULL,
    published_date DATE NOT NULL,
    description VARCHAR,
    category_id INT NOT NULL,
    publisher_id INT NOT NULL,
    FOREIGN KEY (publisher_id) 
       REFERENCES publishers (publisher_id),
    FOREIGN KEY (category_id) 
       REFERENCES categories (category_id)
);   

 

 

또한 다음과 같이 books 및 publishers 테이블을 기반으로 뷰를 작성합니다.

CREATE VIEW book_info 
AS SELECT
    book_id,
    title,
    isbn,
    published_date,
    name
FROM
    books b
INNER JOIN publishers 
    USING(publisher_id)
ORDER BY title;   

 

 

다음 문은 ALTER TABLE DROP COLUM 문을 사용하여 books 테이블에서 category_id 열을 제거합니다.

ALTER TABLE books 
DROP COLUMN category_id; 

 

 

books 테이블의 구조를 보여드리겠습니다.

출력에서 볼 수 있듯이 문은 category_id 열뿐만 아니라 category_id 열과 관련된 외부 키 제약 조건도 제거했습니다.

 


다음 문은 publisher_id 열을 제거하려고 시도합니다.

ALTER TABLE books 
DROP COLUMN publisher_id;   

PostgreSQL에서 다음 오류가 발생했습니다.

 

book_info 뷰가 books 테이블의 publisher_id 열을 사용하고 있다고 명시했습니다. 다음 문에 표시된 것처럼 CASCADE 옵션을 사용하여 publisher_id 열과 book_info 보기를 모두 제거해야 합니다.

ALTER TABLE books 
DROP COLUMN publisher_id CASCADE;  

명령문은 우리가 예상했던 대로 다음과 같은 통지를 줍니다.

 

 

단일 문을 사용하여 isbn 열과 description 열을 모두 제거하려면 다음과 같이 여러 DROP COLUMN 절을 추가합니다.

ALTER TABLE books 
  DROP COLUMN isbn,
  DROP COLUMN description;   

 

결과를 확인해 봅니다.

3개의 열만 남았습니다.


ALTER TABLE 문에서 PostgreSQL DROP COLUMN 절을 사용하여 테이블에서 하나 이상의 열을 삭제하는 방법을 배웠습니다.

 

다음 시간에 만나요.


본 강의는 PostgreSQL Tutorial을 참조합니다.  https://www.postgresqltutorial.com/
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다.

 

728x90

댓글