SQLite 教程:自动增长字段与关键特性

需积分: 42 64 下载量 72 浏览量 更新于2024-08-09 收藏 1.95MB PDF 举报
"SQLite 学习教程 - 如何建立自动增长字段?" 在 SQLite 数据库中,自动增长字段通常用于创建唯一的标识符,这在很多数据库设计中是非常常见的需求。以下是关于如何建立自动增长字段以及相关的一些 SQLite 知识点: 1. **自动增长字段的设置**: 当你声明一个列(通常是主键)为 `INTEGER PRIMARY KEY` 时,SQLite 会自动将其设置为自动增长。这意味着每当在这个列上插入 `NULL` 或者不指定值时,系统会自动提供一个比当前最大值大 1 的整数。例如,创建表 `t1` 如下: ``` CREATE TABLE t1( a INTEGER PRIMARY KEY, b INTEGER ); ``` 插入数据时,如 `INSERT INTO t1 VALUES(NULL, 123)`,实际上等同于插入一个自动增长的整数和指定的 `b` 值。 2. **sqlite3_last_insert_rowid()**: 这是一个 SQLite 提供的 API 函数,它会返回最近一次插入操作的整数主键值,这对于跟踪自动增长字段的值非常有用。 3. **并发性和线程安全性**: SQLite 在第三版中增强了并发性,支持多个应用程序或者一个应用的多个实例同时访问同一个数据库文件。不过,线程安全性的级别取决于你的 SQLite 编译选项,有单线程、多线程和串行化三种模式。 4. **大小限制**: SQLite 数据库没有固定的大小限制,但是每个单独的数据库文件大小受制于操作系统文件大小的最大值,通常为几 TB。 5. **VARCHAR 长度**: 在 SQLite 中,VARCHAR 类型的字段长度没有预设限制,但实际长度受限于可用的存储空间。 6. **BLOB 支持**: SQLite 支持二进制大对象(BLOB),因此你可以存储任意大小的二进制数据。 7. **数据库文件格式和版本**: SQLite 3 引入了新的文件格式,增强了对不同数据类型的支持,如 UTF-8 和 UTF-16,并提供了更好的并发性能。 8. **SQL 特性**: SQLite 支持大部分 SQL 标准,但并不支持所有特性,比如某些复杂的 SQL 子查询和窗口函数。 9. **数据类型**: SQLite 的数据类型是弱类型的,它有七个存储类别,包括 NULL、INTEGER、REAL、TEXT、BLOB、NUMERIC 和 affinity。 10. **错误处理**: SQLITE_SCHEMA 错误通常发生在尝试访问正在修改的数据库结构时,例如在表或索引正在创建、删除或修改的过程中。 11. **空间回收**: 删除大量数据后,数据库文件不会立即缩小,因为 SQLite 不会回收已删除页的空间。为了释放空间,可以使用 VACUUM 命令。 12. **许可费用**: SQLite 是开源的,可以在商业产品中免费使用,无需支付许可费用。 13. **特殊字符处理**: 在字符串中使用单引号 `'`,可以使用两个单引号 `''` 来转义,或者使用参数化查询来避免解析问题。 14. **ROUND 函数**: ROUND 函数的行为可能与期望的不同,例如 `ROUND(9.95, 1)` 返回 9.9,这是因为在 SQLite 中,浮点数的精度有限,可能导致非标准的四舍五入行为。 这些是关于 SQLite 的基本概念和操作,它们构成了使用 SQLite 进行数据库管理的基础。了解并熟练掌握这些知识点,将有助于你在实际项目中更有效地使用 SQLite。