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 命令允许用户重命名表或向现有表添加新列。无法重命名列、删除列或向表添加或删除约束。

广告