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

기존 MySQL 테이블의 필드에 UNIQUE 제약 조건을 적용하는 방법

이미 생성된 MySQL 테이블의 특정 컬럼에 UNIQUE 제약 조건을 추가해야 하는 경우가 종종 있습니다. 이때는 ALTER TABLE 문을 사용하면 간단하게 해결할 수 있습니다.

기본 문법

UNIQUE 제약 조건은 아래 두 가지 방식 중 하나로 적용할 수 있습니다.

ALTER TABLE table_name MODIFY colum_name datatype UNIQUE;
               OR
ALTER TABLE table_name ADD UNIQUE (colum_name);
  • MODIFY: 기존 컬럼의 데이터 타입과 함께 UNIQUE 속성을 다시 정의하는 방식입니다.
  • ADD UNIQUE: 해당 컬럼에 UNIQUE 인덱스를 새로 추가하는 방식입니다.

적용 예시

예를 들어, 다음과 같은 구조의 'test4'라는 테이블이 있다고 가정해 보겠습니다. 현재 'Name' 컬럼에는 Key 값이 지정되어 있지 않습니다.

mysql> DESCRIBE test4;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID    | int(11)     | YES  | UNI | NULL    |       |
| Name  | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.04 sec)

'Name' 컬럼에 UNIQUE 제약 조건을 추가하려면 ALTER TABLE 명령을 다음과 같이 실행하면 됩니다.

mysql> ALTER TABLE test4 MODIFY Name Varchar(20) UNIQUE;
Query OK, 0 rows affected (0.22 sec)
Records: 0 Duplicates: 0 Warnings: 0

명령 실행 후 테이블 구조를 다시 확인해 보겠습니다.

mysql> DESCRIBE test4;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID    | int(11)     | YES  | UNI | NULL    |       |
| Name  | varchar(20) | YES  | UNI | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.04 sec)

위 결과에서 확인할 수 있듯이, 'Name' 컬럼의 Key 항목이 UNI로 변경되었습니다. 이는 MySQL이 해당 필드에 UNIQUE 제약 조건을 성공적으로 적용했음을 의미합니다.

또한 다음과 같이 ADD UNIQUE 절을 사용하여 동일한 결과를 얻을 수도 있습니다.

mysql> Alter table test4 add UNIQUE(name);
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

참고 사항

UNIQUE 제약 조건을 추가하기 전에 해당 컬럼에 이미 중복된 값이 존재하면 오류가 발생합니다. 따라서 제약 조건을 적용하기 전에 중복 데이터가 없는지 먼저 확인하는 것이 좋습니다. 또한 UNIQUE 제약 조건이 설정된 컬럼에는 NULL 값은 여러 개 허용될 수 있다는 점도 기억해 두세요.