推荐答案
在 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 会维护一个内部表来跟踪已使用的最大主键值,因此可能会稍微影响性能。 - 复合主键的列顺序会影响索引的创建和使用,因此在设计复合主键时需要考虑查询的需求。