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

DEFAULT 約束在 INSERT INTO 語句未提供特定值時為列提供預設值。

示例

例如,以下 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 值。

一個表只能有一個主鍵,它可以由單個或多個欄位組成。當多個欄位用作主鍵時,它們被稱為組合鍵

如果表在任何欄位上定義了主鍵,則不能有兩條記錄具有該欄位的相同值。

示例

您已經在上面的各種示例中看到了我們使用 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。

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 命令允許使用者重命名錶或向現有表新增新列。無法重新命名列、刪除列或向表新增或刪除約束。

廣告