코딩 스쿨 MySQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

MySQL Unique

MySQL UNIQUE: 중복 값 방지하기

UNIQUE 제약 조건은 MySQL에서 특정 열이나 열 조합의 값이 데이터베이스 내에서 유일해야 함을 보장하는 데 사용됩니다. 이 제약 조건을 사용하면 중복된 데이터를 방지하고, 데이터 무결성을 강화할 수 있습니다. 이 가이드는 MySQL에서 UNIQUE 제약 조건을 사용하는 방법, 기본 문법 및 예제를 설명합니다.


1. 기본 개념

1.1. 정의

UNIQUE 제약 조건은 테이블의 특정 열에 대해 중복된 값을 허용하지 않습니다. 이는 NULL 값을 포함하여 설정할 수 있으며, 여러 행에 대해 동일한 값이 입력되지 않도록 합니다. UNIQUE 제약 조건이 설정된 열에 중복된 값이 입력되면 오류가 발생합니다.

1.2. 기본 문법

UNIQUE 제약 조건은 테이블을 생성할 때 또는 ALTER TABLE 문을 사용하여 추가할 수 있습니다.

1.2.1. 테이블 생성 시 UNIQUE 설정

CREATE TABLE table_name (
    column_name datatype UNIQUE,
    ...
);

1.2.2. 기존 테이블에 UNIQUE 추가

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column_name);


2. UNIQUE 사용 예제

2.1. 테이블 생성 시 UNIQUE 설정

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100) NOT NULL
);

이 쿼리는 users 테이블을 생성하며, username 열에 UNIQUE 제약 조건을 추가합니다. 이로 인해 같은 사용자 이름이 두 번 입력될 수 없도록 합니다.

2.2. 여러 열에 UNIQUE 설정

UNIQUE 제약 조건은 여러 열의 조합에도 적용할 수 있습니다.

예제

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL,
    product_code VARCHAR(50) NOT NULL,
    UNIQUE (product_name, product_code)
);

위 쿼리는 products 테이블에서 product_nameproduct_code의 조합이 유일해야 함을 보장합니다. 즉, 같은 제품 이름과 코드 조합이 두 번 입력될 수 없습니다.

2.3. 기존 테이블에 UNIQUE 추가

기존 테이블에 UNIQUE 제약 조건을 추가하려면 다음과 같이 합니다.

ALTER TABLE users
ADD CONSTRAINT unique_email UNIQUE (email);

이 쿼리는 users 테이블의 email 열에 UNIQUE 제약 조건을 추가하여, 이메일 주소가 중복될 수 없도록 합니다.


3. UNIQUE 제약 조건과 NULL

  • NULL 처리: UNIQUE 제약 조건은 NULL 값을 허용합니다. 그러나 동일한 열에 여러 개의 NULL 값이 있을 수 있습니다. 즉, UNIQUE 제약 조건은 NULL이 아닌 값에 대해서만 유일성을 보장합니다.

예제

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(100) UNIQUE,
    phone_number VARCHAR(15) UNIQUE
);

위 쿼리는 emailphone_number 열에 UNIQUE 제약 조건을 추가합니다. 이 경우, 이메일과 전화번호는 중복될 수 없지만, NULL 값은 여러 번 입력할 수 있습니다.


4. UNIQUE 제약 조건의 장점

  1. 데이터 무결성 보장: UNIQUE 제약 조건은 데이터의 중복을 방지하여 데이터 무결성을 유지합니다.
  2. 효율적인 데이터 검색: UNIQUE 제약 조건이 있는 열에 인덱스가 생성되어 데이터 검색이 더 빨라질 수 있습니다.
  3. 비즈니스 규칙 구현: 특정 비즈니스 규칙을 데이터베이스에 반영할 수 있습니다. 예를 들어, 사용자 이름이나 이메일 주소가 고유해야 하는 경우에 유용합니다.

5. 제약 조건 수정 및 삭제

5.1. UNIQUE 제약 조건 수정

UNIQUE 제약 조건을 수정하려면 먼저 해당 제약 조건을 삭제한 후, 새로운 제약 조건을 추가해야 합니다.

5.2. UNIQUE 제약 조건 삭제

UNIQUE 제약 조건을 삭제하려면 다음과 같은 쿼리를 사용합니다.

ALTER TABLE users
DROP INDEX unique_email;  -- MySQL의 경우

이 쿼리는 users 테이블에서 unique_email 제약 조건을 삭제합니다.


6. 요약

MySQL UNIQUE 제약 조건은 데이터베이스 테이블의 특정 열이나 열 조합의 값을 유일하게 유지하는 데 중요한 역할을 합니다. 이를 통해 중복된 데이터를 방지하고 데이터 무결성을 보장할 수 있습니다.

  • 정의: 특정 열의 중복 값 금지.
  • 기본 문법: 테이블 생성 시 또는 ALTER TABLE을 통해 추가.
  • NULL 처리: NULL 값은 허용되지만, NULL이 아닌 값에 대해서만 유일성 보장.
  • 장점: 데이터 무결성 유지, 효율적인 데이터 검색 및 비즈니스 규칙 구현.

MySQL의 UNIQUE 제약 조건을 활용하여 효율적이고 안정적인 데이터 관리를 수행할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com