코딩 스쿨 MySQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

MySQL Constraints

MySQL Constraints: 데이터 무결성을 유지하기 위한 제약 조건

Constraints는 MySQL에서 테이블의 데이터에 대한 규칙을 정의하여 데이터 무결성을 보장하는 데 사용됩니다. 제약 조건은 데이터베이스 설계에서 중요한 역할을 하며, 잘못된 데이터 입력을 방지하고 데이터 간의 관계를 명확히 합니다. 이 가이드는 MySQL에서 사용할 수 있는 주요 제약 조건의 종류와 그 사용법을 설명합니다.


1. 제약 조건의 종류

1.1. NOT NULL

NOT NULL 제약 조건은 해당 열이 NULL 값을 가질 수 없도록 합니다. 이 제약 조건을 설정하면 반드시 유효한 값을 입력해야 합니다.

예제

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

위 쿼리는 usernameemail 열에 NOT NULL 제약 조건을 추가하여 NULL 값을 허용하지 않습니다.


1.2. UNIQUE

UNIQUE 제약 조건은 특정 열의 값이 고유해야 함을 보장합니다. 즉, 중복된 값이 입력될 수 없습니다.

예제

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

이 쿼리는 username 열에 UNIQUE 제약 조건을 추가하여, 같은 사용자 이름이 두 번 입력될 수 없도록 합니다.


1.3. PRIMARY KEY

PRIMARY KEY 제약 조건은 테이블의 각 레코드를 고유하게 식별하는 데 사용됩니다. 기본 키는 NULL 값을 가질 수 없으며, 테이블에서 유일해야 합니다.

예제

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

위 쿼리는 id 열을 기본 키로 설정합니다. 이 열은 NULL 값을 허용하지 않으며, 각 레코드는 고유합니다.


1.4. FOREIGN KEY

FOREIGN KEY 제약 조건은 다른 테이블의 기본 키를 참조하여 두 테이블 간의 관계를 정의합니다. 이를 통해 데이터의 무결성을 보장할 수 있습니다.

예제

CREATE TABLE orders (
    order_id INT AUTO_INCREMENT,
    user_id INT,
    order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (order_id),
    FOREIGN KEY (user_id) REFERENCES users(id)
);

이 쿼리는 orders 테이블의 user_id 열이 users 테이블의 id 열을 참조하도록 설정합니다. 이 경우, users 테이블에 존재하지 않는 사용자 ID를 orders 테이블에 입력할 수 없습니다.


1.5. CHECK

CHECK 제약 조건은 특정 조건을 만족하는 데이터만 입력될 수 있도록 합니다. 즉, 입력되는 값이 제약 조건을 만족해야 합니다.

예제

CREATE TABLE products (
    product_id INT AUTO_INCREMENT,
    product_name VARCHAR(100) NOT NULL,
    price DECIMAL(10, 2) CHECK (price >= 0),
    PRIMARY KEY (product_id)
);

이 쿼리는 price 열에 대해 가격이 0 이상이어야 한다는 조건을 설정합니다. 음수 가격은 허용되지 않습니다.


2. 제약 조건 사용 시 주의사항

  1. 성능 고려: 제약 조건을 사용하면 데이터 무결성이 보장되지만, 성능에 영향을 줄 수 있습니다. 특히 대량의 데이터가 입력되는 경우 성능 저하가 발생할 수 있습니다.
  2. 데이터 무결성: 제약 조건을 설정할 때는 데이터 간의 관계를 잘 이해하고 있어야 하며, 이를 통해 데이터의 일관성을 유지할 수 있습니다.
  3. 수정 및 삭제: 제약 조건이 설정된 열을 수정하거나 삭제할 때는 관련된 제약 조건을 먼저 제거해야 할 수 있습니다.

3. 제약 조건 수정 및 삭제

테이블을 생성한 후에도 제약 조건을 추가하거나 수정할 수 있습니다. 이를 위해 ALTER TABLE 문을 사용할 수 있습니다.

3.1. 제약 조건 추가

ALTER TABLE users
ADD CONSTRAINT unique_email UNIQUE (email);

이 쿼리는 users 테이블의 email 열에 UNIQUE 제약 조건을 추가합니다.

3.2. 제약 조건 삭제

ALTER TABLE users
DROP INDEX unique_email;

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


4. 요약

MySQL Constraints는 데이터베이스의 데이터 무결성을 유지하기 위한 필수적인 요소입니다. 다양한 제약 조건을 통해 데이터 입력 시 유효성을 검사하고, 잘못된 데이터가 입력되는 것을 방지할 수 있습니다.

  • NOT NULL: NULL 값 금지.
  • UNIQUE: 중복 값 금지.
  • PRIMARY KEY: 레코드 고유 식별.
  • FOREIGN KEY: 테이블 간의 관계 정의.
  • CHECK: 특정 조건을 만족하는 데이터만 입력 허용.

MySQL의 제약 조건을 활용하여 효율적이고 안정적인 데이터베이스 설계를 할 수 있습니다.


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