MySQL ALTER TABLE 문은 기존 테이블의 구조를 수정하거나 변경하는데 사용한다. 새로운 컬럼(column)의 추가 또는 제거, 컬럼의 데이터 유형 변경, 이름 변경, 기본 키(primary key), 색인(index), 엔진유형과 같은 테이블 옵션을 수정 할 수 있다.
여기에서는 테이블의 컬럼을 수정 하는 방법을 살펴보겠다. 다룰 내용은 아래와 같다.
ADD COLUMN - 컬럼 추가
MODIFY COLUMN - 컬럼 수정
CHANGE COLUMN - 컬럼 수정(이름까지)
DROP COLUMN - 컬럼 삭제
ADD PRIMARY - PRIMARY Key 설정
DROP PRIMARY - PRIMARY Key 삭제
ALTER TABLE table_name ACTION [COLUMN column_name | CONSTRAINT constraint_name | etc.]
table_name : 수정하려는 테이블의 이름이다.
ACTION : 수행하려는 행동 유형이다. ACTION 키워드 뒤에 수정하려는 컬럼 혹은 제약조건등이 들어갈 수 있다.
연습을 위해서 테스트용 테이블을 만들었다.
CREATE TABLE User ( id int NOT NULL, name varchar(32) NOT NULL, email varchar(32) NOT NULL, address varchar(128) NOT NULL )
테이블에 컬럼을 추가한다. 문법은 아래와 같다.
ALTER TABLE table_name ADD column_name datatype;
User 테이블에 website url을 저장하기 위한 컬럼을 추가해보자.
ALTER TABLE User ADD website VARCHAR(80);
이미 존재하는 컬럼을 데이터 타입을 변경한다.
ALTER TABLE table_name MODIFY COLUMN column_name datatype;
website의 데이터 타입을 TEXT로 변경하기로 했다.
ALTER TABLE User MODIFY COLUMN website TEXT;
MODIFY COLUMN과 비슷하지만 이름까지 변경 할 수 있다.
ALTER TABLE table_name CHANGE COLUMN original_name new_name column_definition;
website 컬럼의 이름을 website_url 로 하고 데이터타입을 varchar(160)으로 변경해보자. 그리고 NOT NULL 제약 조건도 함께 설정했다.
ALTER TABLE User CHANGE website website_url VARCHAR(160) NOT NULL;
테이블 스키마를 확인해보자.
mysql> desc User; +-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | id | int | NO | | NULL | | | name | varchar(32) | NO | | NULL | | | email | varchar(32) | NO | | NULL | | | address | varchar(128) | NO | | NULL | | | website_url | varchar(160) | NO | | NULL | | +-------------+--------------+------+-----+---------+-------+
테이블에서 컬럼을 삭제한다. 문법은 아래와 같다.
ALTER TABLE table_name DROP COLUMN column_name;
더 이상 사용하지 않는 website 컬럼을 삭제하기로 했다.
ALTER TABLE User DROP website;
테이블에 Primary Key를 설정한다.
ALTER TABLE table_name ADD PRIMARY KEY (ID, LastName, ...)
id 컬럼을 primary key로 설정해보자.
ALTER TABLE User ADD PRIMARY KEY (id);
Primary key가 생성되면 인덱스가 만들어진다. show index 명령으로 인덱스 테이블 정보를 확인해보자.
show index from User \G *************************** 1. row *************************** Table: User Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: id Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: Visible: YES Expression: NULL
테이블의 Primary Key를 삭제한다.
ALTER TABLE User DROP PRIMARY KEY;
id 컬럼의 primary key를 삭제해보자. Primary key는 테이블에 하나만 있기 때문에 컬럼이나 인덱스 이름등을 설정할 필요가 없다.
MySQL의 다른 문서들은 SQL Study With MySQL 을 참고하자.
Copyrights © - Joinc, All Rights Reserved. Inherited From - Yundream Rebranded By - Joonphil
MySQL ALTER TABLE - COLUMN 편
MySQL ALTER TABLE 문은 기존 테이블의 구조를 수정하거나 변경하는데 사용한다. 새로운 컬럼(column)의 추가 또는 제거, 컬럼의 데이터 유형 변경, 이름 변경, 기본 키(primary key), 색인(index), 엔진유형과 같은 테이블 옵션을 수정 할 수 있다.
여기에서는 테이블의 컬럼을 수정 하는 방법을 살펴보겠다. 다룰 내용은 아래와 같다.
ADD COLUMN - 컬럼 추가
MODIFY COLUMN - 컬럼 수정
CHANGE COLUMN - 컬럼 수정(이름까지)
DROP COLUMN - 컬럼 삭제
ADD PRIMARY - PRIMARY Key 설정
DROP PRIMARY - PRIMARY Key 삭제
문법
table_name : 수정하려는 테이블의 이름이다.
ACTION : 수행하려는 행동 유형이다. ACTION 키워드 뒤에 수정하려는 컬럼 혹은 제약조건등이 들어갈 수 있다.
Example Table
연습을 위해서 테스트용 테이블을 만들었다.
ALTER TABLE ADD COLUMN - 컬럼 추가
테이블에 컬럼을 추가한다. 문법은 아래와 같다.
User 테이블에 website url을 저장하기 위한 컬럼을 추가해보자.
ALTER TABLE MODIFY COLUMN - 컬럼 수정
이미 존재하는 컬럼을 데이터 타입을 변경한다.
website의 데이터 타입을 TEXT로 변경하기로 했다.
ALTER TABLE CHANGE COLUMN - 컬럼 수정(이름까지)
MODIFY COLUMN과 비슷하지만 이름까지 변경 할 수 있다.
website 컬럼의 이름을 website_url 로 하고 데이터타입을 varchar(160)으로 변경해보자. 그리고 NOT NULL 제약 조건도 함께 설정했다.
테이블 스키마를 확인해보자.
ALTER TABLE DROP COLUMN - 컬럼 삭제
테이블에서 컬럼을 삭제한다. 문법은 아래와 같다.
더 이상 사용하지 않는 website 컬럼을 삭제하기로 했다.
ALTER TABLE ADD PRIMARY - PRIMARY Key 설정
테이블에 Primary Key를 설정한다.
id 컬럼을 primary key로 설정해보자.
Primary key가 생성되면 인덱스가 만들어진다. show index 명령으로 인덱스 테이블 정보를 확인해보자.
ALTER TABLE DROP PRIMARY KEY - PRIMARY Key 삭제
테이블의 Primary Key를 삭제한다.
id 컬럼의 primary key를 삭제해보자. Primary key는 테이블에 하나만 있기 때문에 컬럼이나 인덱스 이름등을 설정할 필요가 없다.
참고
MySQL의 다른 문서들은 SQL Study With MySQL 을 참고하자.
Recent Posts
Archive Posts
Tags