位置:首頁 > 數據庫 > SQLite教學 > SQLite 約束

SQLite 約束

約束數據表列執行的規則。這些是用來限製可以去到一個表中的不同的數據。這確保數據庫中的數據的準確性和可靠性。

約束可以是列級或表級。僅適用於表級約束被應用到整個表的一列列級約束。

以下是可在SQLite常用的約束。

  • NOT NULL Constraint: 確保一列不能有NULL值。

  • DEFAULT Constraint : 提供一列冇有指定時的默認值。

  • UNIQUE Constraint: 確保所有列中的值是不同(唯一)的。

  • PRIMARY Key: 唯一標識數據庫表中的各行/記錄。

  • CHECK Constraint: CHECK約束,確保一列中的所有值滿足一定條件。

NOT NULL 約束

默認情況下,列可以保存NULL值。如果你不想一列有一個NULL值,那麼需要定義現在不允許該列在此列指定NULL約束。

NULL是不一樣的,因為冇有數據,而是它代表著未知的數據。

示例:

例如,以下的SQLite語句創建一個新的表COMPANY,並增加了五列,其中三個ID和姓名和年齡,指定不接受空值(NULL):

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

DEFAULT 約束

DEFAULT約束提供了一個默認值一列INSERT INTO語句時不提供一個特定的值。

示例:

例如,以下的SQLite語句創建一個新的表COMPANY,並增加了五列。在這裡,工資列設置為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 約束

唯一約束防止兩個記錄在一個特定的列具有相同的值。在COMPANY表,例如,您可能要防止兩個或兩個以上的人具有相同的年齡。

示例:

例如,以下的SQLite語句創建一個新的表稱為COMPANY,並增加了五列。在這裡,年齡列設置為唯一的,所以不能有兩個同年齡記錄:

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 約束

數據庫表中的主鍵約束唯一標識每個記錄。可以有多個UNIQUE的列,但在一個表中隻有一個主鍵。在設計數據庫表的主鍵是重要的。主鍵是唯一的ID。

我們用他們來引用表中的行。通過主鍵成為其他表的外鍵,在創建表之間的關係。由於“長期存在編碼監督”,可以為NULL的主鍵在SQLite。這是與其他數據庫的情況下

主鍵是唯一標識數據庫表中的各行/記錄表中的一個字段。通過主鍵必須包含唯一值。主鍵列不能有NULL值。

一個表隻能有一個主鍵,它可以由一個或多個字段。當多個字段作為主鍵,它們被稱為複合鍵。

如果一個表有任何字段上定義一個主鍵,那麼不能有兩個記錄具有相同的值在該字段。

示例:

已經看到了我們創建COMAPNY表ID作為主鍵上麵的各種例子:

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,並增加了五列。在這裡,我們添加CHECK薪金列,所以不能有任何的零工資:

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命令允許用戶重命名表或現有表添加一個新的列。這是不可能的重命名列,刪除一列,或從一個表中添加或刪除的約束。