Sqlite 简明教程

SQLite - Constraints

约束是对表中的数据列强制执行的规则。用于限制可以进入表的数据类型。这确保了数据库中数据的准确性和可靠性。

约束可以是列级别或表级别的。列级别约束仅适用于一个列,而表级别约束适用于整个表。

以下是 SQLite 中常用的约束。

  1. NOT NULL Constraint - 确保列不能具有 NULL 值。

  2. *DEFAULT 约束 * - 在未指定默认值时为列提供默认值。

  3. UNIQUE Constraint − 确保列中的所有值都不同。

  4. PRIMARY Key − 唯一标识数据库表中的每一行/记录。

  5. CHECK Constraint − 确保列中的所有值都满足特定条件。

NOT NULL Constraint

默认情况下,列可以存储 NULL 值。如果你不希望列有 NULL 值,那么你需要为此列定义这样的约束,指定该列现在不允许 NULL。

NULL 与没有数据不同,相反,它表示未知的数据。

Example

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

DEFAULT 约束在 INSERT INTO 语句未提供特定值时,为列提供默认值。

Example

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

UNIQUE 约束防止两条记录在特定列中具有相同的值。例如,在 COMPANY 表中,你可能希望防止两个人或更多人具有相同的年龄。

Example

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

PRIMARY KEY 约束唯一标识数据库表中的每条记录。可以有多个 UNIQUE 列,但表中只有一个主键。在设计数据库表时,主键很重要。主键是唯一的 ID。

我们使用它们来引用表行。在表之间创建关系时,主键变为其他表中的外键。由于“长期编码疏忽”,SQLite 中的主键可以为 NULL。其他数据库并非如此。

主键是表中的一个字段,它唯一标识数据库表中的每一行/记录。主键必须包含唯一值。主键列不能有 NULL 值。

一个表只能有一个主键,它可以由单个或多个字段组成。当多个字段用作主键时,它们被称为 composite key

如果表在任何字段上定义了主键,那么你不能让两条记录具有该字段的相同值。

Example

在上面,你已经看到了各种示例,我们在其中创建了 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 Constraint

CHECK 约束使条件能够检查要输入到记录中的值。如果条件评估为假,则记录违反约束并且不会输入表中。

Example

例如,以下 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)
);

Dropping Constraint

SQLite 支持 ALTER TABLE 的有限子集。SQLite 中的 ALTER TABLE 命令允许用户重命名表或向现有表添加新列。无法重命名列、删除列或添加或删除表的约束。