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

MySQL UNIQUE 제약 조건 완벽 가이드: 테이블 필드에 적용하는 방법

MySQL UNIQUE 제약 조건이란?

이름 그대로 MySQL의 UNIQUE 제약 조건은 테이블 내 특정 컬럼 값의 고유성을 보장하는 기능입니다. 즉, 해당 컬럼에는 중복된 값을 삽입할 수 없습니다. UNIQUE 제약 조건은 일종의 인덱스를 생성하며, 인덱스가 걸린 컬럼의 모든 값은 반드시 서로 달라야 합니다.

또한 한 가지 중요한 점은 하나의 MySQL 테이블에 여러 개의 UNIQUE 컬럼을 둘 수 있다는 것입니다. 예를 들어 사용자 테이블에서 이메일 주소와 전화번호를 각각 UNIQUE로 설정해 중복 가입을 방지할 수 있습니다.

컬럼 정의 시 UNIQUE 키워드로 적용하기

UNIQUE 제약 조건은 컬럼을 정의하는 시점에 'UNIQUE' 키워드를 명시하여 적용할 수 있습니다. 다음 예제를 통해 살펴보겠습니다.

mysql> Create table test3(ID INT UNIQUE, Name Varchar(20));
Query OK, 0 rows affected (0.16 sec)

위 쿼리는 'ID' 컬럼에 UNIQUE 제약 조건이 설정된 'test3' 테이블을 생성합니다. DESCRIBE 문으로 확인해 보면 다음과 같습니다.

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

Key 항목에 'UNI'가 표시된 것을 확인할 수 있으며, 이는 해당 컬럼에 UNIQUE 제약 조건(고유 인덱스)이 적용되었음을 의미합니다.

테이블 수준에서 UNIQUE 제약 조건 적용하기

UNIQUE 제약 조건은 컬럼 정의에 직접 명시하는 방법 외에도, 테이블 생성 시 별도의 제약 조건 구문으로 지정할 수 있습니다.

mysql> Create table test4(ID INT, Name Varchar(20),UNIQUE(ID));
Query OK, 0 rows affected (0.15 sec)

마찬가지로 DESCRIBE 문으로 확인해 보겠습니다.

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)

UNIQUE 제약 조건 활용 팁

  • 중복 데이터 방지: 이메일, 사용자명 등 고유해야 하는 데이터에 적용하면 애플리케이션 로직 없이도 데이터베이스 차원에서 무결성을 유지할 수 있습니다.
  • NULL 값 허용: PRIMARY KEY와 달리 UNIQUE 컬럼은 NULL 값을 허용합니다(단, 여러 개의 NULL은 중복으로 간주되지 않습니다).
  • 조합 UNIQUE: 두 개 이상의 컬럼 조합에 대해 고유성을 부여하려면 UNIQUE(a, b) 형태로 작성할 수 있습니다.

이처럼 UNIQUE 제약 조건은 데이터 무결성을 지키는 간단하면서도 강력한 도구이며, 테이블 설계 단계에서 미리 적용해 두는 것이 좋습니다.