以下是 SQLite 建表语句的示例,包含了所有常见数据类型、自增主键、索引、唯一索引等特性:
CREATE TABLE example_table (
-- 自增主键
id INTEGER PRIMARY KEY AUTOINCREMENT,
-- 常见数据类型
name TEXT NOT NULL, -- 文本类型
age INTEGER, -- 整数类型
salary REAL, -- 浮点类型
is_active BOOLEAN DEFAULT 1, -- 布尔类型(SQLite 用 0 和 1 表示)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- 日期时间类型,默认当前时间
description TEXT, -- 长文本类型
binary_data BLOB, -- 二进制类型
-- 唯一约束
email TEXT UNIQUE, -- 唯一索引
-- 索引
INDEX idx_name (name), -- 普通索引
UNIQUE INDEX idx_email_unique (email) -- 唯一索引
);
说明
-
自增主键:
id INTEGER PRIMARY KEY AUTOINCREMENT
:定义一个自增的主键字段。
-
常见数据类型:
TEXT
:文本类型,用于存储字符串。INTEGER
:整数类型,用于存储整数。REAL
:浮点类型,用于存储小数。BOOLEAN
:布尔类型,SQLite 中通常用0
和1
表示False
和True
。DATETIME
:日期时间类型,DEFAULT CURRENT_TIMESTAMP
表示默认值为当前时间。BLOB
:二进制类型,用于存储二进制数据。
-
唯一约束:
UNIQUE
:确保字段的值唯一。
-
索引:
INDEX
:创建普通索引,提高查询性能。UNIQUE INDEX
:创建唯一索引,确保索引字段的值唯一。
示例数据插入
INSERT INTO example_table (name, age, salary, is_active, email, description, binary_data)
VALUES ('John Doe', 30, 50000.50, 1, 'john.doe@example.com', 'A sample description', X'010203');
查询示例
-- 查询所有数据
SELECT * FROM example_table;
-- 按条件查询
SELECT * FROM example_table WHERE age > 25;
-- 使用索引字段查询
SELECT * FROM example_table WHERE name = 'John Doe';
注意事项
-
SQLite 的数据类型:
- SQLite 是动态类型系统,即使定义了数据类型,也可以存储其他类型的数据。
- 例如,
TEXT
字段可以存储整数或浮点数。
-
自增主键的限制:
- 如果删除表中的某些行,自增主键不会重新填充空缺的值。
- 如果需要严格的连续自增值,可以使用
ROWID
,但不推荐。
-
索引的使用:
- 索引可以提高查询性能,但会增加插入、更新和删除操作的开销。
- 对于频繁更新的字段,谨慎使用索引。
通过以上示例,你可以在 SQLite 中创建功能完善的表,并利用索引和约束优化数据管理。