什么是 SQLite?
SQLite 是一种关系数据库管理系统。它最初设计于 2000 年 8 月。它是一款开源软件。
- SQLite 非常轻便,大小不到 500Kb。与 SQL Server 或 Oracle 等其他数据库管理系统不同。
- SQLite 不是客户服务器数据库管理系统:它是一个内存库,可以直接调用和使用,无需安装和配置。
- 一个典型的 SQLite 数据库将包含在计算机磁盘存储器上的一个文件中,所有数据库对象(表、视图、触发器等)都包含在该文件中,无需专用服务器。
SQLite 性能--为什么以及何时使用 SQLite?
何时使用 SQLite:
- 无论何时您需要轻量级数据库,如果您正在为电视机、手机、相机、家用电子设备等设备开发嵌入式软件,那么 SQLite 都是一个不错的选择。
- 如果要为网站管理复杂的会话信息,SQLite 可以处理中低流量的 HTTP 请求。
- 如果需要存储文件存档,SQLite 可以生成比普通 ZIP 存档更小的存档,并包含更多的元数据。
- 如果要在应用程序中对某些数据进行处理,可以使用 SQLite 作为临时数据集。您可以将数据加载到 SQLite 内存数据库中,然后按您想要的方式进行查询。您可以按照自己的方式将数据提取回应用程序。
- 与在内存变量内部进行数据处理相比,它提供了一种简单高效的数据处理方式。例如,如果您正在开发一个程序,并有一些记录需要进行计算。这时,你可以创建一个 SQLite 数据库,然后在其中插入记录,只需一个查询,就可以直接选择记录并对其进行计算。
- 当你需要一个用于学习和培训的数据库系统时,SQLite 是一个很好的选择。正如我们所解释的,无需安装和配置。只需在电脑中复制 SQLite 库,就可以创建数据库了。
为什么使用 SQLite:
- 完全免费--SQLite是一种开放源代码,无需许可证即可使用。
- SQLite 是一种跨平台数据库管理系统;它可用于 Windows、Mac OS、Linux 和 Unix 等多种不同平台。它还可用于许多嵌入式操作系统,如 Symbian 和 Windows CE。
- SQLite 提供了一种高效的数据存储方式,列的长度是可变的,而不是固定的。因此,SQLite 只分配字段所需的空间。例如,如果您有一列 varchar(200),并在其上放置一个长度为 10 个字符的值,那么 SQLite 将只为该值分配 20 个字符的空间,而不是整个 200 空间。
- 广泛的 SQLite API - SQLite 为广泛的编程语言提供 API,例如.Net 语言(Visual Basic、C#)、PHP、Java、Objective C、Python 和许多其他编程语言。
- SQLite 非常灵活。
- SQLite 变量是动态类型的,这意味着变量的类型要在赋值时才能确定,而不是在声明时确定。
- INSERT ON CONFLICT REPLACE 语句。使用该语句,可以让 SQLite 尝试对表进行插入,如果发现主键相同的记录,则使用插入值中的值对其进行更新。
- 使用 SQLite,您可以在同一会话中同时处理多个数据库,只需附加这些数据库,就可以同时访问所有数据库的对象(表、视图等)。
SQLite 限制和不支持的功能
下面列出了 SQLite 中不支持的功能和限制:
- SQLite 既不支持 RIGHT OUTER JOIN,也不支持 FULL OUTER JOIN。它只支持 LEFT OUTER JOIN。
- ALTER 表语句的限制:在 SQLite 中,使用 ALTER TABLE 语句只能添加列或重命名表(我们将在下面的教程中看到)。但不能执行以下操作:
- ALTER 列。
- 删除列。
- 添加约束。
- 视图是只读的,不能在视图中写入 INSERT、DELETE 或 UPDATE 语句。不过,你可以在视图上创建触发器,并在其中执行 INSERT、DELETE 或 UPDATE 语句。
- SQLite 中不执行 GRANT 和 REVOKE 命令。SQLite 中只实现了普通文件访问权限。这是因为 SQLite 与其他数据库管理系统不同,它可以读写磁盘文件。
- 触发器 - 正如我们将在后续教程中看到的,SQLite 仅支持 FOR EACH ROW 触发器,不支持 FOR EACH STATEMENT 触发器。