MySQL에서 이미 생성된 테이블의 기존 필드(컬럼)를 고유하게 만들려면 ALTER 명령어를 사용하여 해당 필드에 UNIQUE 제약 조건을 추가하면 됩니다. 이번 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table AddingUnique -> ( -> Id int, -> name varchar(100) -> ); Query OK, 0 rows affected (0.44 sec)
2. 기존 필드에 UNIQUE 추가하는 문법
이미 존재하는 컬럼에 UNIQUE 제약 조건을 추가하는 기본 문법은 다음과 같습니다.
alter table yourTableName add UNIQUE(yourColumnName);
이제 위 문법을 적용하여 AddingUnique 테이블의 name 컬럼에 UNIQUE 제약 조건을 추가해 보겠습니다.
mysql> alter table AddingUnique add UNIQUE(name); Query OK, 0 rows affected (0.60 sec) Records: 0 Duplicates: 0 Warnings: 0
3. 중복 데이터 삽입 시 오류 확인
UNIQUE 제약 조건이 설정되었기 때문에 이제 동일한 값의 레코드는 테이블에 삽입할 수 없습니다. 만약 중복된 데이터를 삽입하려고 하면 다음과 같이 에러가 발생합니다.
mysql> insert into AddingUnique values(1,'John'); Query OK, 1 row affected (0.15 sec) mysql> insert into AddingUnique values(1,'John'); ERROR 1062 (23000): Duplicate entry 'John' for key 'name' mysql> insert into AddingUnique values(2,'Carol'); Query OK, 1 row affected (0.18 sec) mysql> insert into AddingUnique values(3,'John'); ERROR 1062 (23000): Duplicate entry 'John' for key 'name' mysql> insert into AddingUnique values(4,'Smith'); Query OK, 1 row affected (0.18 sec)
위 실행 결과를 보면, 'John'이라는 이름은 이미 존재하기 때문에 두 번째와 네 번째 INSERT 문에서 ERROR 1062 (Duplicate entry) 오류가 발생한 것을 확인할 수 있습니다.
4. 전체 레코드 조회하기
테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from AddingUnique;
실행 결과는 다음과 같습니다.
+------+-------+ | Id | name | +------+-------+ | 1 | John | | 2 | Carol | | 4 | Smith | +------+-------+ 3 rows in set (0.00 sec)
정리
이처럼 ALTER TABLE ... ADD UNIQUE(컬럼명); 구문 하나만으로 기존 테이블의 특정 필드에 고유성 제약을 손쉽게 부여할 수 있습니다. UNIQUE 제약 조건이 적용된 컬럼에는 중복된 값이 저장될 수 없으며, 중복 삽입 시도 시 ERROR 1062 오류가 발생하여 데이터 무결성이 보장됩니다.