English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQL 제약 조건 (Constraints)

이 튜토리얼에서는 SQL 제약 조건을 사용하는 방법을 배울 것입니다.

제약 조건이 무엇인가요?

제약 조건은 테이블의 하나나 여러 개의 열에 대해 저장할 수 있는 값의 유형을 제한하는 것입니다. 제약 조건은 데이터베이스 테이블 내 데이터의 정확성과 일관성을 유지하는 표준 메커니즘을 제공합니다.

SQL에는 여러 가지 제약 조건이 있으며, 이 중에는 다음과 같은 것이 있습니다:

이제 각 제약 조건을 자세히 논의해 보겠습니다.

NOT NULL 제약 조건

NOT NULL 제약 조건은 지정된 열에 NULL 값을 허용하지 않도록 제한합니다.

이는 NOT NULL 제약 조건이 열에 적용되면, NULL 값을 추가하지 않고 새로운 행을 테이블에 삽입해야 한다는 것을 의미합니다.

이름의 테이블을 생성합니다.person의이 테이블은 네 열을 가지고 있으며, 그 중 세 열idname의 테이블에 추가하고,NULL 값을 허용하지 않습니다.

column creates a default value.
    id INT NOT NULL,
    ) id INT NOT NULL PRIMARY KEY,3name VARCHAR(
    0) NOT NULL,
    ) birth_date DATE,15) NOT NULL
);

주의:빈 값이나 NULL은 0이나 공백이나 길이가 0인 문자열(예: '')와 다릅니다. NULL은 입력되지 않았음을 의미합니다.

PRIMARY KEY 제약 조건(PRIMARY KEY)

PRIMARY KEY 제약 조건은 유일한 식별 표시자를 가진 열이나 집합을 표시합니다. 테이블의 어떤 두 행도 같은 PRIMARY KEY 값을 가질 수 없습니다. 마찬가지로, PRIMARY KEY 열에 NULL 값을 입력할 수도 없습니다.

이름의 테이블을 생성합니다.다음 SQL 문장은personsidPRIMARY KEY로 지정된 열. 이는 해당 필드가 NULL이나 중복 값을 허용하지 않음을 의미합니다.

column creates a default value.
    CREATE TABLE persons (
    ) id INT NOT NULL PRIMARY KEY,3name VARCHAR(
    0) NOT NULL,
    ) birth_date DATE,15) NOT NULL
);

힌트:PRIMARY KEY는 일반적으로 테이블의 한 열로 구성되지만, 여러 열로 구성된 PRIMARY KEY도 가능합니다. 예를 들어, 직원의 이메일 주소나 할당된 식별 번호는 직원 테이블의 논리적 PRIMARY KEY입니다.

유일 제약 조건(UNIQUE)

UNIQUE 제약 조건은 테이블에서 한 개나 여러 개의 열에 유일한 값을 포함하도록 제한합니다.

UNIQUE 제약 조건과 PRIMARY KEY 제약 조건은 모두 유일성을 강제하지만, PRIMARY KEY는 열이나 열 조합(주키가 아니라는 것을 의미)의 유일성을 강제할 때 제약 조건 대신 사용해야 합니다.

이름의 테이블을 생성합니다.다음 SQL 문장은persons의 테이블에 추가하고,phone

column creates a default value.
    CREATE TABLE persons (
    ) id INT NOT NULL PRIMARY KEY,3name VARCHAR(
    0) NOT NULL,
    ) birth_date DATE,15column is specified as unique. This means that the field does not allow duplicate values.
);

주의:) NOT NULL UNIQUE

A table can have multiple UNIQUE constraints defined on it, but only one PRIMARY KEY constraint can be defined on a table. Additionally, unlike PRIMARY KEY constraints, UNIQUE constraints allow NULL values.

기본 제약 조건(DEFAULT)

DEFAULT 제약 조건이 열의 기본 값을 지정합니다.column's default value is whenINSERT

sentence does not explicitly assign a specific value when the database engine inserts a value into the column. 다음 SQL 문장은 “/국가지역”

column creates a default value.
    CREATE TABLE persons (
    ) id INT NOT NULL PRIMARY KEY,3name VARCHAR(
    0) NOT NULL,
    ) birth_date DATE,15phone VARCHAR(
    ) NOT NULL UNIQUE,3country VARCHAR(
);

주의:0) NOT NULL DEFAULT 'Australia'

IF table column is defined as NOT NULL but a default value is assigned to the column, a new row can be inserted into the table without explicitly assigning a value to the column in the INSERT statement.

외래 키 제약 조건(FOREIGN KEY)

이는 외래 키(FK)가 두 테이블의 데이터 간에 관계를 설정하고 강화하는 열이나 열의 조합임을 보여줍니다.직원(employees)부서departments)테이블 간의 관계 예시 그래프를 참조하세요. 신중히 살펴보면,employees테이블의dept_id열과departments테이블의 주키 열과 일치합니다. 따라서,dept_id가의 열명의 직원테이블의 외래 키의부서테이블.

MySQL에서 FOREIGN KEY 테이블을 생성할 때 제약 조건을 정의하여 외래 키를 생성할 수 있습니다. 다음 문장은employees테이블의dept_id열에 외래 키를 설정하여, 이 외래 키가departments테이블의dept_id열.

CREATE TABLE employees (
    emp_id INT NOT NULL PRIMARY KEY,
    emp_name VARCHAR(55) NOT NULL,
    hire_date DATE NOT NULL,
    salary INT,
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

CHECK 제약 조건(CHECK)

CHECK 제약 조건은 열에 배치할 수 있는 값을 제한하는 데 사용됩니다.

예를 들어, 급여 열의 값 범위를 제한하는 CHECK 제약 조건을 생성하여 값이310,000에서 20,000 사이로1010,000와 20,000 사이입니다. 이렇게 하면 정상적인 급여 범위를 벗어난 급여를 입력하는 것을 방지할 수 있습니다. 예를 들어:

CREATE TABLE employees (
    emp_id INT NOT NULL PRIMARY KEY,
    emp_name VARCHAR(55) NOT NULL,
    hire_date DATE NOT NULL,
    salary INT NOT NULL CHECK (salary >= 3000 AND salary <= 10000),
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

주의: MySQL은 SQL 체크 제약을 지원하지 않습니다. 그러나 MySQL의 모든 저장 엔진은 CHECK 절을 해석하지만, 무시합니다.