관리 메뉴

don't stop believing

alter table 사용하기 본문

Database/PostgreSQL

alter table 사용하기

Tongchun 2017. 9. 26. 11:12

간혹 테이블의 컬럼명이나 타입을 변경해야 할 때가 있다.

Alter table 명령을 사용하면 된다.


먼저 아래와 같이 테이블을 만들었습니다.

CREATE TABLE words (
	equipId serial PRIMARY KEY,
	word varchar (50) NOT NULL,
	korean varchar (250) NOT NULL,
	example varchar (1000) NULL,
	location varchar (250) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
	updateDate date
);

잘못 만들어 진 부분은 아래와 같습니다.

1. korean이라고 만들어진 column명을 means로 변경

2. example의 데이터 타입을 text로 변경

3. 사용하지 않는 location과 updateDate column을 삭제


첫번째로 컬럼 이름을 변경하겠습니다.

변경할 때는 alter table <테이블 이름> rename column <현재 컬럼명> to <변경할 컬럼명> 으로 하면 됩니다.

alter table words rename column korean to means;

컬럼명 수정 후 테이블을 확인하면 변경된 것을 확인할 수 있다.

 \d words
 equipid    | integer                 | not null default nextval('words_equipid_seq'::regclass)
 word       | character varying(50)   | not null
 means      | character varying(250)  | not null
 example    | character varying(1000) | 
 location   | character varying(250)  | 
 updatedate | date                   

두번째로 데이터타입을 변경해 봅시다. varchar로된 타입을 text로 변경합니다.

타입 변경은 alter table <테이블 이름> alter column <컬럼명> type <변경하려는 타입> 으로 하면 됩니다.

alter table words alter column example type text;

변경된 걸 확인해 봅시다.

\d words
 equipid    | integer                | not null default nextval('words_equipid_seq'::regclass)
 word       | character varying(50)  | not null
 means      | character varying(250) | not null
 example    | text                   | 
 location   | character varying(250) | 
 updatedate | date                   | 

마지막으로 사용하지 않는 컬럼 두개를 삭제해 봅시다.

참고로 alter 명령으로 테이블을 수정할 때는 alter table <테이블 이름> <변경 명령>, <변경 명령>, ... 이런 식으로 테이블에서 변경할 내용을 이어가도 됩니다.

컬럼 두개를 삭제하는 건 한번에 처리해 봅시다.

컬럼 삭제는 alter table <테이블 이름> drop column <컬럼명> 으로 하면 됩니다.

alter table words drop column location, drop column updatedate;

컬럼이 삭제되었는지 확인해 봅니다.

\d words
 equipid | integer                | not null default nextval('words_equipid_seq'::regclass)
 word    | character varying(50)  | not null
 means   | character varying(250) | not null
 example | text                   | 

이상 가장 많이 하는 테이블 수정을 해봤습니다.


0 Comments
댓글쓰기 폼