约束数据表列执行的规则。这些是用来限制可以去到一个表中的不同的数据。这确保数据库中的数据的准确性和可靠性。
约束可以是列级或表级。仅适用于表级约束被应用到整个表的一列列级约束。
以下是可在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命令允许用户重命名表或现有表添加一个新的列。这是不可能的重命名列,删除一列,或从一个表中添加或删除的约束。