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

SQLite 제약 조건

제약 조건은 테이블의 데이터 열에 강제하는 규칙입니다. 이는 테이블에 들어갈 수 있는 데이터 유형을 제한하며, 이는 데이터베이스 내 데이터의 정확성과 신뢰성을 보장합니다.

제약 조건은 열 수준이나 테이블 수준으로 할 수 있습니다. 열 수준 제약 조건은 한 열에만 적용되며, 테이블 수준 제약 조건은 전체 테이블에 적용됩니다.

아래는 SQLite에서 사용할 수 있는 일반 제약 조건입니다.

  • NOT NULL 제약 조건 - 열이 NULL 값을 가질 수 없도록 보장합니다.

  • DEFAULT 제약 조건 - 지정되지 않았을 경우 열에 기본 값을 제공합니다.

  • UNIQUE 제약 조건 - 열의 모든 값이 서로 다르도록 보장합니다.

  • PRIMARY Key − 데이터베이스 테이블의 각 행을 고유하게 식별합니다/기록.

  • CHECK 제약 조건 - 열의 모든 값이 특정 조건을 만족하도록 보장합니다.

NOT NULL 제약 조건

기본적으로, 열은 NULL 값을 저장할 수 있습니다. NULL 값을 가질 수 없는 열을 원하시면 이 열에 해당 제약 조건을 정의하여 현재 이 열이 NULL을 허용하지 않도록 설정합니다.

NULL은 데이터가 없는 것을 의미하며, 불명확한 데이터를 대표합니다.

예제

예를 들어, 아래 SQLite 문은 COMPANY라는 새로운 테이블을 생성하고 다섯 열을 추가하며, 중간 세 열(ID, NAME, AGE)는 NULL을 허용하지 않습니다.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

DEFAULT 제약 조건

INSERT INTO 문이 특정 값을 제공하지 않았을 때, DEFAULT 제약 조건이 열에 기본 값을 제공합니다.

예제

예를 들어, 다음 SQLite 문은 COMPANY라는 새로운 테이블을 생성하고 다섯 열을 추가합니다. 여기서 SALARY 열은 기본적으로 설정되어 있습니다.5000.00, 따라서 INSERT INTO 문이 이 열에 값을 제공하지 않으면, 기본적으로 이 열은 설정됩니다.5000.00。

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

UNIQUE 제약 조건

UNIQUE 제약 조건은 특정 열에서 두 개의 레코드가 같은 값을 가질 수 없도록 방지합니다. 예를 들어, COMPANY 테이블에서는 두 명 이상의 사람이 같은 나이를 가질 수 없도록 방지할 수 있습니다.

예제

예를 들어, 다음 SQLite 문은 COMPANY라는 새로운 테이블을 생성하고 다섯 열을 추가합니다. 여기서 AGE 열은 UNIQUE로 설정되어 있으므로, 같은 나이를 가진 두 개의 레코드를 가질 수 없습니다.-

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

PRIMARY Key 제약 조건

PRIMARY KEY 제약 조건은 데이터베이스 테이블의 각 레코드를 고유하게 식별합니다. 더 많은 UNIQUE 열이 있을 수 있지만, 테이블은 하나의 주키만 가질 수 있습니다. 데이터베이스 테이블을 설계할 때, 주키는 중요합니다. 주키는 고유한 ID입니다.

주키를 사용하여 테이블 행을 참조하며, 테이블 간의 관계를 생성할 때, 주키는 다른 테이블의 외래키가 됩니다. '长期的编码监督'으로 인해 SQLite의 주키는 NULL일 수 있습니다. 다른 데이터베이스는 이렇지 않습니다.

주키는 테이블의 필드로, 데이터베이스 테이블의 각 행을 고유하게 식별합니다./레코드. 주키는 고유한 값을 포함해야 하며, 주키 열은 NULL 값을 가질 수 없습니다.

테이블은 하나의 주키만 가질 수 있으며, 이는 단일 필드 또는 여러 필드로 구성될 수 있습니다. 여러 필드가 주키로 사용될 때, 이들은composite key

테이블이 어떤 테이블에 대해 주키 필드(s)를 정의하면, 두 개의 레코드가 같은 값 필드(s)를 가질 수 없습니다.

예제

위에서 많은 예제를 보았습니다. 이 예제에서는 ID가 주키인 COMPANY 테이블을 생성했습니다.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

CHECK 제약 조건

CHECK 제약 조건은 입력된 레코드의 값을 확인할 수 있는 조건을 제공합니다. 조건의 계산 결과가 false라면, 레코드는 제약 조건을 위반하고 테이블에 입력되지 않습니다.

예제

예를 들어, 다음 SQLite가 COMPANY라는 새로운 테이블을 생성하고 다섯 열을 추가합니다. 여기서는 SALARY를 CHECK 열로 추가했습니다. 따라서 SALARY 0이 없어야 합니다.

CREATE TABLE COMPANY3(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    CHECK(SALARY > 0)
);

제약 조건 제거

SQLite는 ALTER TABLE의 제한된 부분을 지원합니다. SQLite의 ALTER TABLE 명령어는 사용자가 테이블을 이름을 변경하거나 기존 테이블에 새로운 열을 추가할 수 있도록 합니다. 열을 이름을 변경하거나 제거할 수 없으며, 테이블에 열을 추가하거나 제거하거나 제약 조건을 추가하거나 제거할 수 없습니다.