백엔드/PostgresQL

[PostgreSQL] Postgresql 강좌 - 6. 테이블 관리 (생성,변경, 삭제)

Koras02 2022. 4. 10. 22:59

PostgreSQL을 배운지 일주일 정도 지났습니다. 어느정도 해보니 재밌고 할만하네용 ㅎㅎㅎ

그럼 이번 시간에 배울 내용은 테이블 관리에 대해 알아보도록 하겠습니다.

 

테이블 생성

테이블을 생성하기 위해서는 CREATE TABLE table_name을 이용해 테이블을 생성할 수 있습니다.

테이블을 생성할 때는 명령어를 실행하는 USER가 테이블의 소유자가 됩니다.

 

테이블 생성에 대한 Syntax

CREATE TABLE table_name ( [
   column_name1 data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
  column_name2 data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
  column_name3 data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
  …
] )

테이블에 추가될 컬럼 이름을 column_name에 넣고 컬럼의 데이터 타입을 data_type 부분에 넣습니다. 

그리고 column_constraint에 생성한 커럼의 제약 조건을 넣어줍니다.

 

다음은 테이블 생성에 대한 몇 가지 예지입니다

Create table 명령어로 departments 테이블을 생성하고 department_id와 name컬럼을 생성해줍니다.

Department_id의 데이터 타입은 integer이고 이 테이블의 DefaultKey(기본키)가 됩니다.

Name의 데이터 타입은 varchar(50)입니다.

 

CREATE TABLE departments(
    Department_id   integer PRIMARY KEY,
    Name        varchar(50)
);

아래 예제에는 CREATE TABLE로 flims테이블을 생성합니다.

테이블의 컬럼으로 code, title, did, date_prod,kind,len 등이 있고

 

films 테이블에서는 제약 조건으로 code 컬럼에서는 NULL값을 갖지 않는

NOT NULL조건과 production 테이블에서 data_prod 컬럼이

중복 없이 유일한 UNIQUE 조건을 만족해야 합니다.

CREATE TABLE films (
    code        char(5) NOT NULL,
    title       varchar(40),
    did         integer,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute,
    CONSTRAINT production UNIQUE(date_prod)
);

테이블 변경

테이블을 변경하는 것은 ALTER TABLE table_name을 이용해 테이블을 변경할 수 있습니다.

ALTER TABLE table_name 
[ADD|DROP|ALTER|SET|RENAME] 
    column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ];

[ADD|DROP|ALTER|SET|RENAME]  은 테이블을 수정할 때 변경할 내용을 선택합니다.

컬럼을 추가할때는 ADD, 삭제시 DROP, 존재하는 컬럼의 데이터를 변경할 때 ALTER, 

 

테이블을 다른 TABLESPACE나 SCHEMA로 이동 시 SET,

테이블, 컬럼 제약조건의 이름을 변경할 시 RENAME을 사용합니다.

 

테이블에 변경할 컬럼 이름을 column_name에 넣고 컬럼의 데이터 타입을 data_type에 넣습니다.

그리고 column_constraint에 변경할 컬럼의 제약 조건을 넣어줍니다.

 

다음은 테이블 변경에 대한 몇가지 예제입니다.

 

departments 테이블에 데이터 타입이 varchar(50)인 address 컬럼을 추가합니다.

 ALTER TABLE departments 
     ADD COLUMN address varchar(50);

departments 테이블에 address 컬럼의 이름을 city로 변경합니다.

ALTER TABLE departments 
  RENAME COLUMN address TO city;

departments 테이블에서 zipchk 제약조건을 삭제합니다.

ALTER TABLE distributors
     DROP    CONSTRAINT    zipchk;

departments 테이블에서 tablespace를 fasttablespace tablespace로 이동합니다.

ALTER TABLE distributors
    SET    TABLESPACE    fasttablespace;

departments 테이블에서 address 컬럼의 데이터 타입을 varchar(80)으로 변경후

name컬럼의 데이터 타입을 varchar(100)으로 변경합니다.

ALTER TABLE distributors
    ALTER COLUMN address TYPE varchar(80),
    ALTER COLUMN name TYPE varchar(100);

테이블 삭제

테이블을 삭제하는 것은 DROP TABLE table_name을 이용해 테이블을 삭제할 수 있습니다.

 

테이블 삭제 Syntax

DROP TABLE [ IF EXISTS ] table_name [, ...] [ CASCADE | RESTRICT ]

테이블을 삭제할 시 테이블을 소유하고 있는 USER나 SUPERUSER만이 테이블을 삭제할 수 있습니다.

테이블 전체를 삭제하는 것이 아닌 테이블 내의 행들만 삭제 할때는 DELETE나 TRUNCATE를 사용합니다.

 

먼전 삭제할 테이블 이름을 table_name에 넣고 제약조건으로 CASCADE를 사용할 경우

이 테이블과 view나 개체들도 함께 삭제됩니다.

 

RESTRICT를 사용할 경우 다른 개체가 종속되어 있을 경우 테이블 삭제를 제한합니다.

다음은 FIlms 테이블과 distributors 테이블 삭제 예제입니다.

DROP TABLE films, distributors;

참고 자료

 

테이블 관리 (생성,변경,삭제)

테이블 생성 CREATE TABLE table_name 을 이용하여 테이블을 생성할 수 있습니다. 테이블을 생성할 때 명령을 실행하는 USER가 테이블의 소..

www.gurubee.net