This slide is based on the book "SQLite" written by Chris Newman. Some are just translation of it.
References:
为了实现简单化,
如果您需要其中一些功能,并且不介意它们带来的复杂性,那么
SQLite is not designed to replace Oracle. It is designed to replace fopen().
SQLite 的主要缺点是其不支持高并发性.
http://msnoise.org/doc/about_db_performances.html
虽然 SQLite 可以通过以不同用户身份运行的流程访问,但如果设置了正确的文件权限,数据库引擎无法检测到哪个用户正在执行特定操作。
这样做的好处是管理简单,没有必要建立一个复杂的用户授权计划。任何有权阅读数据库文件的用户都可以访问数据库表和记录。同样,在共享环境中,用户可以在不受系统管理员任何参与的情况下创建自己的 SQLite 数据库到其文件空间。
SQLite 支持 ANSI SQL-92 标准的一个大子集. 某些功能得到了一定程度的实现, 少数几个功能完全不支持.
比如, 原子事务是可以的, 但是不能被嵌套: 简单的子查询是可以的, 但是 correlated 子查询不行; 触发器可以是行级触发, 但不能语句级触发. 有视图, 不过是只读的.
https://www.sqlite.org/omitted.html
SQLite 库包含一个十分强大的机制用于添加用户自定义函数到 SQL 命令集中. 自定义函数甚至可以用许多受支持语言的API来写, 而不仅仅是 C/C++.
SQLite 的源代码是开放的, 任何人可以自由查看和修改代码. 如果 SQLite 缺失某个你认为必需的特性, 你可以自行添加, 然后反馈到社区.
现在, SQLite 通过 API 对其他编程语言拥有广泛的支持. 这些接口使用基础的 C/C++ 接口与 SQLite 数据库文件进行通信.
核心接口是由单一的库实现的, Linux/Unix 系统上是 libsqlite.so, Windows 系统上是 sqlite.dll.
仅 SQLite 库是被要求允许所有用户创建他们自己的数据库的, 因此,在共享系统中添加 SQL 数据库功能所需的管理非常少.
SQLite3 可以使用
Tcl(Tool Command Language) 是一个十分强大并且易学的动态编程语言.
http://www.tcl.tk/
对于很多其他编程语言, 包括 Java, .NET, Smalltalk 以及 Ruby 等, SQLite 也都有 API. 随着越来越多语言的支持, 它们被添加到下面的列表中. http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers .