位置:首页 > > 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命令允许用户重命名表或现有表添加一个新的列。这是不可能的重命名列,删除一列,或从一个表中添加或删除的约束。