MySQL에서는 ALTER 명령어를 사용하여 기본 키(PRIMARY KEY)와 AUTO_INCREMENT 속성을 동시에 제거할 수 있습니다. 기본적인 문법은 다음과 같습니다.
ALTER TABLE yourTableName DROP PRIMARY KEY, change yourColumnName yourColumnName 데이터타입;
예제 테이블 생성하기
문법을 실제로 이해하기 위해 먼저 예제 테이블을 생성해 보겠습니다. 아래 쿼리로 'removePrimaryKey'라는 이름의 테이블을 만듭니다.
mysql> create table removePrimaryKey
-> (
-> StudentId int NOT NULL AUTO_INCREMENT,
-> StudentFirstName varchar(20),
-> StudentLastName varchar(20),
-> PRIMARY KEY(StudentId)
-> );
Query OK, 0 rows affected (0.47 sec)DESC 명령으로 테이블 구조 확인하기
테이블의 구조를 확인하려면 DESC 명령어를 사용합니다.
desc yourTableName;
'removePrimaryKey' 테이블의 구조를 확인해 보겠습니다.
mysql> desc removePrimaryKey;
실행 결과는 다음과 같습니다.
+------------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+-------------+------+-----+---------+----------------+ | StudentId | int(11) | NO | PRI | NULL | auto_increment | | StudentFirstName | varchar(20) | YES | | NULL | | | StudentLastName | varchar(20) | YES | | NULL | | +------------------+-------------+------+-----+---------+----------------+ 3 rows in set (0.01 sec)
위 출력 결과에서 주목할 부분은 Key 열과 Extra 열입니다. Key 열에는 PRI(기본 키)가 표시되고, Extra 열에는 auto_increment가 설정되어 있는 것을 확인할 수 있습니다. 이제 앞서 소개한 ALTER DROP 명령어를 사용하여 두 속성을 모두 제거해 보겠습니다.
기본 키와 AUTO_INCREMENT 제거하기
제거 쿼리는 다음과 같습니다.
mysql> alter table removePrimaryKey DROP PRIMARY KEY, change StudentId StudentId int; Query OK, 0 rows affected (1.79 sec) Records: 0 Duplicates: 0 Warnings: 0
쿼리가 성공적으로 실행되어 기본 키와 AUTO_INCREMENT가 모두 제거되었습니다. 정말로 속성이 삭제되었는지 다시 DESC 명령으로 확인해 보겠습니다.
mysql> desc removePrimaryKey;
실행 결과는 다음과 같습니다.
+------------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+-------------+------+-----+---------+-------+ | StudentId | int(11) | YES | | NULL | | | StudentFirstName | varchar(20) | YES | | NULL | | | StudentLastName | varchar(20) | YES | | NULL | | +------------------+-------------+------+-----+---------+-------+ 3 rows in set (0.07 sec)
결과를 비교해 보면, 이전에는 StudentId 열의 Key 값이 PRI였고 Extra 값이 auto_increment였지만, 이제는 두 항목이 모두 사라진 것을 확인할 수 있습니다. 이처럼 DROP PRIMARY KEY와 CHANGE 절을 하나의 ALTER 문에 함께 사용하면 기본 키와 AUTO_INCREMENT 속성을 간편하게 제거할 수 있습니다.