MySQL에서 컬럼에 UNIQUE 제약 조건이 설정되어 있으면 중복된 값을 입력할 수 없습니다. 이번 글에서는 UNIQUE 제약 조건이 적용된 테이블을 만들고, 실제로 중복 값 입력 시 오류가 발생하는지 확인한 뒤, 해당 제약 조건을 삭제하는 방법까지 단계별로 살펴보겠습니다.
1. UNIQUE 제약 조건이 있는 테이블 생성
먼저 Name 컬럼에 UNIQUE 제약 조건을 설정하여 테이블을 생성합니다. 이렇게 하면 해당 컬럼에는 중복된 값을 추가할 수 없습니다.
mysql> create table UniqueConstraintDemo -> ( -> Name varchar(200) unique -> ); Query OK, 0 rows affected (1.05 sec)
2. DESC 명령으로 제약 조건 확인
DESC 명령을 사용하면 테이블에 UNIQUE 제약 조건이 설정되어 있는지 확인할 수 있습니다.
mysql> DESC UniqueConstraintDemo;
실행 결과는 다음과 같습니다. Key 항목에 UNI가 표시되어 있으므로 Name 컬럼에 UNIQUE 제약 조건이 적용된 것을 알 수 있습니다.
+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | Name | varchar(200) | YES | UNI | NULL | | +-------+--------------+------+-----+---------+-------+ 1 row in set (0.00 sec)
3. 중복 값 삽입 시 오류 확인
Name 컬럼에 UNIQUE 제약 조건이 있기 때문에 동일한 값을 두 번 삽입하면 오류가 발생합니다. 아래 쿼리를 통해 직접 확인해 보겠습니다.
mysql> insert into UniqueConstraintDemo values('John');
Query OK, 1 row affected (0.54 sec)
mysql> insert into UniqueConstraintDemo values('John');
ERROR 1062 (23000): Duplicate entry 'John' for key 'Name'
위의 Error 1062는 UNIQUE 제약 조건이 걸린 컬럼에 중복 값을 추가하려고 시도했음을 의미합니다. 첫 번째 INSERT는 정상적으로 실행되었지만, 두 번째 INSERT에서는 'John'이라는 값이 이미 존재하기 때문에 오류가 발생한 것입니다.
4. UNIQUE 제약 조건 삭제하기
UNIQUE 제약 조건은 사실상 인덱스로 생성되기 때문에, DROP INDEX 구문을 사용하여 삭제할 수 있습니다. 기본 문법은 다음과 같습니다.
DROP INDEX yourColumnName ON yourTableName;
이제 위의 문법을 실제 테이블에 적용하여 UNIQUE 제약 조건을 제거해 보겠습니다.
mysql> DROP INDEX Name ON UniqueConstraintDemo; Query OK, 0 rows affected (0.39 sec) Records: 0 Duplicates: 0 Warnings: 0
5. 제약 조건 삭제 여부 확인
DESC 명령을 다시 실행하여 UNIQUE 제약 조건이 성공적으로 제거되었는지 확인합니다.
mysql> DESC UniqueConstraintDemo;
아래 출력 결과를 보면 Key 항목이 비어 있는 것을 확인할 수 있습니다. 이는 UNIQUE 제약 조건이 성공적으로 삭제되었음을 의미하며, 이제 Name 컬럼에 중복된 값을 자유롭게 삽입할 수 있습니다.
+-------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+-------+ | Name | varchar(200) | YES | | NULL | | +-------+--------------+------+-----+---------+-------+ 1 row in set (0.00 sec)
정리
MySQL에서 UNIQUE 제약 조건을 삭제하는 방법을 정리하면 다음과 같습니다.
- UNIQUE 제약 조건은 내부적으로 인덱스로 관리됩니다.
DROP INDEX 컬럼명 ON 테이블명;구문으로 제거할 수 있습니다.- DESC 명령으로 Key 항목이 비어 있는지 확인하여 삭제 여부를 검증할 수 있습니다.