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;
참고 자료
'백엔드 > PostgresQL' 카테고리의 다른 글
[PostgreSQL] Postgresql 강좌 - 7.SELECT 문법 (0) | 2023.01.09 |
---|---|
[PostgreSQL] Postgresql 강좌 - 5.제약 조건 (0) | 2022.04.08 |
[PostgreSQL] Postgresql 강좌 - 4. 데이터 타입 (0) | 2022.04.08 |