Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 기존 필드에 UNIQUE 제약 조건을 설정하는 방법

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 오류가 발생하여 데이터 무결성이 보장됩니다.