推荐答案
在 SQLite 中,可以通过以下方式定义主键:
单列主键:
CREATE TABLE table_name ( column_name INTEGER PRIMARY KEY );复合主键:
CREATE TABLE table_name ( column1 INTEGER, column2 TEXT, PRIMARY KEY (column1, column2) );自增主键:
CREATE TABLE table_name ( id INTEGER PRIMARY KEY AUTOINCREMENT, column_name TEXT );
本题详细解读
1. 单列主键
在 SQLite 中,单列主键是最常见的主键形式。通过在列定义中使用 PRIMARY KEY 关键字,可以将该列定义为主键。主键列的值必须是唯一的,且不能为 NULL。
示例:
CREATE TABLE users (
user_id INTEGER PRIMARY KEY,
username TEXT
);在这个例子中,user_id 列被定义为主键,确保每个用户的 user_id 是唯一的。
2. 复合主键
复合主键是指由多个列组合而成的主键。在 SQLite 中,可以通过在 CREATE TABLE 语句中使用 PRIMARY KEY 子句来定义复合主键。
示例:
CREATE TABLE orders (
order_id INTEGER,
product_id INTEGER,
quantity INTEGER,
PRIMARY KEY (order_id, product_id)
);在这个例子中,order_id 和 product_id 两列共同构成了复合主键,确保每个订单中的每个产品组合是唯一的。
3. 自增主键
SQLite 提供了 AUTOINCREMENT 关键字,用于自动递增主键列的值。使用 AUTOINCREMENT 时,SQLite 会自动为新插入的行生成一个唯一的整数值。
示例:
CREATE TABLE employees (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT
);在这个例子中,id 列被定义为自增主键,每次插入新记录时,id 列的值会自动递增。
注意事项
- 在 SQLite 中,主键列默认是
NOT NULL的,即使没有显式指定。 - 使用
AUTOINCREMENT时,SQLite 会维护一个内部表来跟踪已使用的最大主键值,因此可能会稍微影响性能。 - 复合主键的列顺序会影响索引的创建和使用,因此在设计复合主键时需要考虑查询的需求。