코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

SQL Unique

SQL UNIQUE: 중복을 허용하지 않는 제약 조건

SQL UNIQUE 제약 조건은 열에 중복된 값이 저장되지 않도록 제한하는 제약 조건입니다. UNIQUE 제약 조건이 설정된 열은 각 행에서 고유한 값을 가져야 하며, 같은 값이 반복될 수 없습니다. 하나의 테이블에 여러 개의 UNIQUE 열을 설정할 수 있으며, PRIMARY KEY와는 다르게 NULL 값을 허용할 수 있습니다.


1. UNIQUE 제약 조건 기본 문법

CREATE TABLE 테이블_이름 (
    열_이름 데이터_타입 UNIQUE
);

  • 열_이름: 중복을 허용하지 않을 열의 이름.
  • 데이터_타입: 해당 열에 저장될 데이터 유형.
  • UNIQUE: 이 열의 값은 중복되지 않아야 함.

2. UNIQUE 제약 조건 예제

2.1 테이블 생성 시 UNIQUE 제약 조건 추가

예제: employees 테이블에서 email 열에 UNIQUE 제약 조건 설정

CREATE TABLE employees (
    employee_id INT,
    name VARCHAR(100),
    email VARCHAR(100) UNIQUE  -- 중복된 이메일 허용하지 않음
);

이 명령은 employees 테이블의 email 열에 UNIQUE 제약 조건을 추가하여, 중복된 이메일을 입력할 수 없도록 설정합니다.


2.2 테이블 생성 후 UNIQUE 제약 조건 추가 (ALTER TABLE)

기존 테이블에 UNIQUE 제약 조건을 추가할 수도 있습니다. ALTER TABLE 명령을 사용하여 열에 제약 조건을 추가합니다.

문법

ALTER TABLE 테이블_이름
ADD CONSTRAINT 제약조건_이름 UNIQUE (열_이름);

  • 제약조건_이름: UNIQUE 제약 조건의 이름.
  • 열_이름: UNIQUE 제약 조건을 적용할 열의 이름.

예제: employees 테이블의 email 열에 UNIQUE 제약 조건 추가

ALTER TABLE employees
ADD CONSTRAINT unique_email UNIQUE (email);

이 명령은 employees 테이블의 email 열에 unique_email이라는 UNIQUE 제약 조건을 추가합니다. 이제 email 열은 중복된 값을 허용하지 않게 됩니다.


3. UNIQUE 제약 조건 제거

기존 테이블에서 UNIQUE 제약 조건을 제거할 수 있습니다. ALTER TABLE 명령을 사용하여 제거합니다.

문법

ALTER TABLE 테이블_이름
DROP CONSTRAINT 제약조건_이름;

  • 제약조건_이름: 제거할 UNIQUE 제약 조건의 이름.

예제: employees 테이블에서 email 열의 UNIQUE 제약 조건 제거

ALTER TABLE employees
DROP CONSTRAINT unique_email;

이 명령은 employees 테이블의 unique_email 제약 조건을 제거하여 email 열에 중복된 값을 허용할 수 있게 합니다.


4. 다중 열에 UNIQUE 제약 조건 설정 (복합 UNIQUE 제약 조건)

여러 열을 조합하여 복합 UNIQUE 제약 조건을 설정할 수 있습니다. 이 경우 여러 열의 값 조합이 고유해야 하며, 개별 열이 중복을 허용할 수 있습니다.

문법

CREATE TABLE 테이블_이름 (
    열_이름1 데이터_타입,
    열_이름2 데이터_타입,
    UNIQUE (열_이름1, 열_이름2)
);

예제: employees 테이블에서 first_namelast_name의 조합에 UNIQUE 제약 조건 설정

CREATE TABLE employees (
    employee_id INT,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    UNIQUE (first_name, last_name)  -- 이름과 성의 조합이 중복되지 않도록 설정
);

이 명령은 first_namelast_name 열의 조합이 중복되지 않도록 설정합니다. 즉, 이름과 성의 같은 조합은 여러 번 입력될 수 없습니다.


5. PRIMARY KEY와 UNIQUE의 차이

  • PRIMARY KEY: 테이블에서 고유한 값을 가지며, NULL 값을 허용하지 않습니다. 하나의 테이블에 오직 하나의 PRIMARY KEY만 설정할 수 있습니다.
  • UNIQUE: 고유한 값을 가지지만, NULL 값을 허용할 수 있습니다. 한 테이블에 여러 개의 UNIQUE 제약 조건을 설정할 수 있습니다.

예제: PRIMARY KEY와 UNIQUE 차이

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,  -- PRIMARY KEY, 고유하고 NULL 허용하지 않음
    email VARCHAR(100) UNIQUE     -- UNIQUE, 고유하지만 NULL 허용 가능
);

이 예제에서 employee_idPRIMARY KEY로 설정되어 NULL을 허용하지 않으며, 고유한 값을 가져야 합니다. 반면, emailUNIQUE 제약 조건이 적용되어 중복은 허용되지 않지만 NULL 값은 허용할 수 있습니다.


6. 실전 예제

예제 1: 직원 테이블 생성 시 UNIQUE 설정

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100) UNIQUE,  -- 중복된 이메일 허용하지 않음
    phone_number VARCHAR(15)
);

이 예제는 employees 테이블에서 email 열에 UNIQUE 제약 조건을 설정하여 중복된 이메일이 입력되지 않도록 설정합니다.

예제 2: 기존 테이블에 UNIQUE 제약 조건 추가

ALTER TABLE employees
ADD CONSTRAINT unique_phone_number UNIQUE (phone_number);

이 명령은 employees 테이블의 phone_number 열에 UNIQUE 제약 조건을 추가하여 중복된 전화번호를 허용하지 않도록 합니다.


7. 요약

  • UNIQUE 제약 조건은 열에 중복된 값이 저장되지 않도록 제한합니다.
  • 테이블 생성 시나 ALTER TABLE 명령을 통해 기존 테이블에 UNIQUE 제약 조건을 추가할 수 있습니다.
  • 여러 열을 조합하여 복합 UNIQUE 제약 조건을 설정할 수 있으며, 이는 여러 열의 값이 조합하여 고유한 값을 가져야 함을 의미합니다.
  • PRIMARY KEYNULL 값을 허용하지 않지만, UNIQUENULL 값을 허용할 수 있습니다.

UNIQUE 제약 조건은 데이터베이스에서 중복 데이터를 방지하고, 데이터 무결성을 유지하는 데 중요한 역할을 합니다. 각 열이나 열의 조합에서 중복되지 않도록 데이터를 관리할 때 유용합니다.


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