MySQL에서 Key=MUL로 표시되는 열을 만들려면 ADD KEY를 사용해야 합니다. 기본 구문은 다음과 같습니다.
ALTER TABLE yourTableName MODIFY COLUMN yourColumnName data type,
ADD KEY(yourColumnName);
예제 테이블 생성하기
위 구문을 실제로 이해하기 위해 먼저 간단한 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table Instructor
-> (
-> Instructor_Id int,
-> Instructor_Name varchar(30),
-> Instructor_CourseName varchar(100)
-> );
Query OK, 0 rows affected (0.63 sec)
테이블 구조 확인하기
테이블 생성 후 DESC 명령어를 사용하여 테이블 구조를 확인할 수 있습니다. 이 시점에서는 어떤 열에도 MUL 키가 설정되어 있지 않습니다.
mysql> desc Instructor;
실행 결과는 다음과 같습니다.
+-----------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+-------+
| Instructor_Id | int(11) | YES | | NULL | |
| Instructor_Name | varchar(30) | YES | | NULL | |
| Instructor_CourseName | varchar(100) | YES | | NULL | |
+-----------------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
AUTO_INCREMENT 열에 Key=MUL 적용하기
이제 'Instructor_Id' 열을 Key=MUL로 지정하는 쿼리를 실행해 보겠습니다.
mysql> alter table Instructor modify column Instructor_Id int NOT NULL AUTO_INCREMENT,
-> add key(Instructor_Id);
Query OK, 0 rows affected (2.88 sec)
Records: 0 Duplicates: 0 Warnings: 0
변경 후 다시 한 번 테이블 구조를 확인합니다.
mysql> desc Instructor;
실행 결과는 다음과 같습니다.
+-----------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+----------------+
| Instructor_Id | int(11) | NO | MUL | NULL | auto_increment |
| Instructor_Name | varchar(30) | YES | | NULL | |
| Instructor_CourseName | varchar(100) | YES | | NULL | |
+-----------------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
일반 열(비기본 키)에 Key=MUL 적용하기
기본 키가 아닌 일반 열에 인덱스를 추가하려면 아래와 같은 쿼리를 사용합니다. 여기서는 'Instructor_Name' 열에 MUL 키를 적용해 보겠습니다.
mysql> alter table Instructor modify column Instructor_Name varchar(30) NOT NULL,
-> add key(Instructor_Name);
Query OK, 0 rows affected (2.77 sec)
Records: 0 Duplicates: 0 Warnings: 0
마지막으로 테이블 구조를 다시 확인해 보면, 두 개의 필드에 Key 값이 MUL로 표시되는 것을 확인할 수 있습니다.
+-----------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+--------------+------+-----+---------+----------------+
| Instructor_Id | int(11) | NO | MUL | NULL | auto_increment |
| Instructor_Name | varchar(30) | NO | MUL | NULL | |
| Instructor_CourseName | varchar(100) | YES | | NULL | |
+-----------------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
MUL 키란 무엇일까요?
참고로 MUL은 해당 열이 중복 값을 허용하는 비고유(non-unique) 인덱스의 첫 번째 열임을 의미합니다. PRIMARY KEY나 UNIQUE 제약 조건과 달리 동일한 값이 여러 행에 존재할 수 있으며, 주로 검색 성능 향상을 위해 사용됩니다.