SQLite入门教程:约束Constraints详解

1 下载量 118 浏览量 更新于2024-09-01 收藏 81KB PDF 举报
"SQLite 入门教程三 好多约束 Constraints" SQLite 是一款轻量级的嵌入式数据库,广泛应用于各种应用场景,特别是在移动设备和嵌入式系统中。本教程将详细介绍SQLite中的约束(Constraints)概念,这些约束用于确保数据库中的数据保持一致性、完整性和有效性。 一、约束Constraints 约束是数据库设计中不可或缺的一部分,它们定义了数据列的规则,以限制可插入或更新的数据类型和范围。以下是一些常见的SQLite约束: 1. NOTNULL:这个约束强制字段不能为NULL,即必须提供一个值。例如,如果“姓名”字段设置了NOTNULL约束,那么在插入或更新记录时,该字段不能留空。 2. UNIQUE:确保字段中的每个值都是唯一的。这可以用于“员工号”这样的字段,以防止重复的编号。 3. PRIMARY KEY:主键是用于唯一标识表中每一行的字段,通常由一个或多个字段组成。主键约束确保每行的主键值都是唯一的,并且自动对主键字段启用NOTNULL约束。 4. FOREIGN KEY:外键约束用于建立两个表之间的关系,确保引用的记录在被引用的表中存在。它维护了数据库的参照完整性。 5. CHECK:此约束允许指定一个表达式,插入或更新的数据必须使该表达式为真。例如,"年龄"字段可以设置一个CHECK约束,如`CHECK (年龄 >= 20)`,以确保年龄始终大于等于20。 6. DEFAULT:当未为字段提供值时,系统会使用默认值。例如,“国籍”字段可以设为默认值“中国”。 二、主键PRIMARY KEY 主键是数据库设计的关键元素,它用于唯一地标识表中的每一行。在SQLite中,可以使用INTEGER类型的列作为主键,并自动赋予其递增的整数值。让我们通过一个简单的例子来看看如何创建带有主键的表: ```sql CREATE TABLE Teachers ( TeacherID INTEGER PRIMARY KEY, Name TEXT NOT NULL, Age INTEGER CHECK (Age >= 20), Nationality TEXT DEFAULT 'China', EmployeeNo INTEGER UNIQUE ); ``` 在这个示例中,`TeacherID`是主键,`Name`字段不允许为空,`Age`字段有CHECK约束,`Nationality`有默认值,而`EmployeeNo`是唯一的。 在实际操作中,我们可以通过以下命令在SQLite命令行环境中创建并验证这个表: ```sql sqlite> .open test.db sqlite> CREATE TABLE Teachers (TeacherID INTEGER PRIMARY KEY, Name TEXT NOT NULL, Age INTEGER CHECK (Age >= 20), Nationality TEXT DEFAULT 'China', EmployeeNo INTEGER UNIQUE); sqlite> .tables Teachers ``` `.tables`命令显示当前数据库中的表,表明`Teachers`表已经成功创建。 通过理解和正确使用这些约束,可以确保SQLite数据库中的数据质量,避免错误的数据输入,并维护数据的一致性。在进行数据库设计时,合理设置约束是非常重要的步骤,它有助于提升数据的可靠性和应用程序的性能。