SQLite - 约束
-
简述
约束是对表上的数据列强制执行的规则。这些用于限制可以进入表的数据类型。这保证了数据库中数据的准确性和可靠性。约束可以是列级或表级。列级约束仅应用于一列,而表级约束应用于整个表。以下是 SQLite 中可用的常用约束。-
NOT NULL 约束 - 确保列不能有 NULL 值。
-
DEFAULT 约束 - 当没有指定时,为列提供默认值。
-
UNIQUE 约束 − 确保列中的所有值都不同。
-
PRIMARY Key − 唯一标识数据库表中的每一行/记录。
-
CHECK 约束 − 确保列中的所有值都满足特定条件。
-
-
非空约束
默认情况下,列可以包含 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 值。一张表只能有一个主键,主键可以由单个或多个字段组成。当多个字段用作主键时,它们被称为一个composite key.如果表在任何字段上定义了主键,则不能有两个记录具有该字段的相同值。例子
您已经在上面看到了各种示例,其中我们创建了以 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 约束使条件能够检查输入到记录中的值。如果条件评估为假,则记录违反约束并且不会输入到表中。例子
例如,以下 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 命令允许用户重命名表或向现有表添加新列。无法重命名列、删除列或在表中添加或删除约束。