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

MySQL에서 UNIQUE 제약 조건으로 중복 값 삽입 방지하기

MySQL UNIQUE 제약 조건 선언 문법

MySQL에서 특정 컬럼에 중복된 값이 저장되지 않도록 하려면 UNIQUE 제약 조건을 사용하면 됩니다. 테이블을 생성할 때 다음과 같이 선언할 수 있습니다.

create table yourTableName
(
    yourColumnName1 dataType,
    yourColumnName2 dataType,
    UNIQUE(yourColumnName1),
    UNIQUE(yourColumnName2)
);

UNIQUE 제약 조건이 설정된 컬럼에는 동일한 값을 가진 레코드가 두 개 이상 저장될 수 없으며, 중복 데이터를 INSERT하려고 하면 에러가 발생하고 삽입이 거부됩니다.

예제 테이블 생성

먼저 예제로 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
(
    Value int,
    Value2 int,
    UNIQUE(Value),
    UNIQUE(Value2)
);
Query OK, 0 rows affected (13.98 sec)

데이터 삽입 및 중복 차단 확인

이제 INSERT 명령어로 몇 개의 레코드를 삽입해 보겠습니다. 앞서 UNIQUE 제약 조건을 설정했기 때문에 중복된 값이 포함된 레코드는 삽입되지 않고 오류가 발생합니다.

mysql> insert into DemoTable values(10,20) ;
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values(10,30);
ERROR 1062 (23000): Duplicate entry '10' for key 'Value'
mysql> insert into DemoTable values(40,20);
ERROR 1062 (23000): Duplicate entry '20' for key 'Value2'
mysql> insert into DemoTable values(60,70);
Query OK, 1 row affected (1.37 sec)

실행 결과를 살펴보면, Value 컬럼에 이미 10이 존재하기 때문에 두 번째 INSERT는 실패하고, Value2 컬럼에 이미 20이 존재하기 때문에 세 번째 INSERT 역시 오류와 함께 거부됩니다.

저장된 데이터 조회

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

위 쿼리는 다음과 같은 결과를 출력합니다.

+-------+--------+
| Value | Value2 |
+-------+--------+
|    10 |     20 |
|    60 |     70 |
+-------+--------+
2 rows in set (0.00 sec)

최종적으로 중복 없이 정상적으로 삽입된 2개의 레코드만 테이블에 남아 있는 것을 확인할 수 있습니다. 이처럼 UNIQUE 제약 조건을 활용하면 애플리케이션 로직에 의존하지 않고도 데이터베이스 수준에서 중복 데이터 입력을 원천적으로 차단할 수 있습니다.