본문 바로가기

데이터/MySQL

[MySQL] UNIQUE 제약조건

UNIQUE 제약조건

UNIQUE 제약조건은 특정 열에 대해 중복된 값을 허용하지 않도록 하는 제약을 설정합니다. 즉, 테이블 내에서 해당 열의 각 값은 유일해야 합니다.

 

UNIQUE 제약조건의 특징

1. 중복된 값 허용 안 함

UNIQUE 제약을 가진 열에는 동일한 값이 중복되어 들어갈 수 없습니다.

 

2. NULL 값은 중복으로 간주하지 않음

UNIQUE 제약조건에서 NULL 값은 중복으로 간주하지 않습니다. 즉, 여러 행이 NULL 값을 가질 수 있습니다.

 

3. 인덱스 생성

UNIQUE 제약조건은 해당 열에 대한 유일한 값 검색을 향상시키기 위해 자동으로 인덱스를 생성합니다.

 

UNIQUE 제약조건의 적절한 사용 사례

1. 고유한 식별자 저장

주민등록번호, 이메일 주소, 사용자명과 같이 고유해야 하는 값을 저장할 때 사용됩니다.

 

2. 관계 정의

다른 테이블과의 관계를 유지할 때, 외래 키로 사용되는 열에 UNIQUE 제약을 걸어 해당 테이블 간의 일대일 또는 일대다 관계를 유지할 수 있습니다.

 

UNIQUE 제약조건 예제

-- 테이블 생성 (고유한 이메일 주소를 저장하는 사용자 테이블)
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100) UNIQUE
);

-- 데이터 삽입
INSERT INTO users (user_id, username, email)
VALUES (1, 'john_doe', 'john@example.com');

INSERT INTO users (user_id, username, email)
VALUES (2, 'jane_smith', 'jane@example.com');

-- 중복된 이메일 주소로의 데이터 삽입 시도 (오류 발생)
INSERT INTO users (user_id, username, email)
VALUES (3, 'bob', 'john@example.com');

위 예제에서 `username``email` 열에는 UNIQUE 제약이 걸려 있습니다. 이를 통해 사용자 테이블에 중복된 사용자명과 이메일 주소를 방지할 수 있습니다. 중복된 값을 삽입하려고 하면 오류가 발생합니다.

'데이터 > MySQL' 카테고리의 다른 글

[MySQL] CHECK 제약조건  (0) 2023.12.06
[MySQL] NOT NULL 제약조건  (1) 2023.12.06
[MySQL] TINYINT(1) 데이터 타입  (2) 2023.12.05
[MySQL] DECIMAL 데이터 타입  (1) 2023.12.05
[MySQL] DATETIME 데이터 타입  (1) 2023.12.05