面试题答案
一键面试- 实现实体完整性的方式:
- 主键约束:在SQLite中,主键是实现实体完整性的核心方式之一。通过定义主键,确保表中的每一行都有一个唯一标识符。主键列的值不能为NULL,这保证了每一行数据的唯一性和确定性。例如,在一个
students
表中,可以将student_id
设为主键,这样每个学生都有唯一的标识。 - 唯一约束:除了主键约束外,SQLite还支持唯一约束。唯一约束确保指定列或列组合的值在表中是唯一的,但与主键不同的是,唯一约束允许列值为NULL,只要NULL值不重复即可。例如,在
students
表中,如果希望email
字段的值唯一,可以对email
列添加唯一约束。 - 自动增量:SQLite支持自动增量特性,通常与主键一起使用。当定义一个主键列并且将其声明为
AUTOINCREMENT
时,SQLite会为新插入的行自动生成一个唯一的整数值。这个值会从1开始,并且每次插入新行时自动递增。例如,在创建students
表时,可以将student_id
定义为主键并设为AUTOINCREMENT
,这样在插入新学生记录时,student_id
会自动生成唯一值。
- 主键约束:在SQLite中,主键是实现实体完整性的核心方式之一。通过定义主键,确保表中的每一行都有一个唯一标识符。主键列的值不能为NULL,这保证了每一行数据的唯一性和确定性。例如,在一个
- 主键约束的作用:
- 唯一性保证:确保表中每一行数据都具有唯一标识,避免重复数据的出现。这在数据库中非常重要,因为重复数据可能导致数据不一致和查询结果不准确。例如,在订单表中,每个订单都应该有唯一的订单号作为主键,以区分不同的订单。
- 数据关联:主键常常用于与其他表建立关联关系。通过在不同表中使用相同的主键值,可以建立起表与表之间的联系,实现数据的关联查询和完整性维护。例如,在
orders
表和order_items
表中,可以通过order_id
作为主键和外键来关联两个表,确保订单和订单项之间的正确关系。
- SQLite对于主键的具体规则和要求:
- 唯一性:主键的值在整个表中必须是唯一的,不允许有重复值。这是保证实体完整性的关键要求。
- 非空性:主键列的值不能为NULL。如果尝试插入一个主键值为NULL的行,SQLite会抛出错误。
- 列类型:主键列的数据类型通常为整数、文本、Blob或实数类型。虽然SQLite支持多种数据类型作为主键,但整数类型是最常用的,尤其是在使用自动增量特性时。
- 复合主键:SQLite允许定义复合主键,即由多个列组成的主键。在这种情况下,复合主键中的所有列组合起来必须是唯一的,且所有列的值都不能为NULL。例如,在一个
teacher_courses
表中,可以将teacher_id
和course_id
组合成复合主键,以确保每个教师教授的每门课程都有唯一标识。