📜  SQLite-约束

📅  最后修改于: 2021-01-04 05:03:44             🧑  作者: Mango


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

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

以下是SQLite中可用的常用约束。

  • NOT NULL约束-确保列不能具有NULL值。

  • 默认约束-如果未指定,则为列提供默认值。

  • 唯一约束-确保列中的所有值都不同。

  • PRIMARY键-唯一标识数据库表中的每一行/记录。

  • 检查约束-确保列中的所有值都满足某些条件。

非空约束

默认情况下,列可以保存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
);

默认约束

当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约束可防止两个记录在特定列中具有相同的值。例如,在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约束唯一地标识数据库表中的每个记录。可以有更多的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 Constraint使条件能够检查输入到记录中的值。如果条件的计算结果为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命令允许用户重命名表或向现有表添加新列。无法重命名列,删除列或从表中添加或删除约束。