linux/mysql

[mysql] 테이블 수정하기

alignG 2010. 9. 5. 16:47

요즘 코칭관련된 웹페이지를 만들어 보고 있는데.
테이블을 처음 생각했을 때라은 달라지는 부분이 많아서 alter를 사용할 일이 많네요.
예전에는 그냥 삭제하고 다시 만들곤 했는데 가지고 있는 데이터들이 다 날라가서 지금은 자제하게 되네요.
alter table을 이용하여 테이블을 변경하면 성능이 떨어질 수 있다고 전에 오라클 배울때 들은 것 같기도 하니 선택은 스스로 하시기를 ^^

alter명령어는 기본적으로 "alter ooo"으로 시작하게 되는데 여기에 view database등이 들어갈 수 있죠. 우리는 테이블을 기준으로 다룰 것이므로 "alter table"로 시작하면 되겟습니다. 그리고 그 뒤에는 어떤 테이블에 대한 것인지 테이블의 이름을 적어주면 되겟습니다.
mysql > alter table [tablename] 블라블라블라 ;

위의 블라블라 블라에는 add modify change drop의 4가지가 들어가게 됩니다. 마치 더하고 수정하고 바꾸고 삭제하고의 4가지 연산입니다.
modify와 change의 2가지 비슷한 느낌으로 다가오죠. 두가지의 차이는 modify는 데이터형을 변경하는 것이고 change는 컬럼명을 변경합니다. 그러면서 데이터형까지도 같이 변경할 수 있구요.
mysql > alter table [tablename] add 블라블라 ;
mysql > alter table [tablename] modify 블라블라;
mysql > alter table [tablename] change 블라블라;
mysql > alter table [tablename] drop 블라 블라;

이제 위의 블라블라에는 연산별로 다른 것이 들어가게 됩니다.
다음 예제를 보고 참고하시기를 ^^ 글을 썻다가 너무 복잡해지는 것 같아 예제만 올립니다.

예제) http://www.cherrynet.co.kr/bbs_view.php?s=66&pseq=9&mnid=1

1. 테이블에 새로운 컬럼 추가
    alter table tablename add column [추가할 컬럼명] [추가할 컬럼 데이타형]

2. 테이블에 컬럼타입 변경하기

    alter table tablename modify column [변경할 컬럼명] [변경할 컬럼 타입]

3. 테이블에 컬럼이름 변경하기

    alter table tablename change column [기존 컬럼명] [변경할 컬럼명] [변경할 컬럼타입]

4. 테이블에 컬럼 삭제하기

    alter table tablename drop column [삭제할 컬럼명]

5. 테이블컬럼에 인덱스 주기

    alter table tablename add index 인덱스명(인덱스를 줄 컬럼1 , 인덱스를 줄 컬럼2, ... )

6. 테이블컬럼에 인덱스 삭제하기

    alter table tablename drop index 인덱스명;

7. 테이블에 Primary Key 만들기

    alter table tablename add primary key (키를 줄 컬럼명1 , 키를 줄 컬럼명2, ...)

8. 테이블에 Primary Key 삭제하기

    alter table tablename drop primary key;

9. 테이블명 바꾸기

    alter table 기존테이블명 rename 새로운테이블명

10. 인덱스 생성

    CREATE [UNIQUE] INDEX index_name ON tbl_name (col_name[(length]),... )

11. 인덱스 삭제

    DROP INDEX index_name


Sql은 알아두면 여러모로 편리한 것 같아요.
어떤 언어든 좀 많이 정장할 일 있다 싶으면 db를 통해 저장하게 되니까요 ^^
반응형