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 |