SQLite – 概述
本章帮助您了解什么是 SQLite,它与 SQL 有何不同,为什么需要它以及它处理应用程序数据库的方式。
SQLite 是一个软件库,它实现了一个独立的、无服务器的、零配置的事务性 SQL 数据库引擎。SQLite是增长最快的数据库引擎之一,但这是受欢迎程度的增长,与其规模无关。SQLite的源代码在公共领域。
什么是SQLite?
SQLite 是一个进程内库,它实现了一个独立的、无服务器的、零配置的事务性 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置它。
SQLite引擎不像其他数据库那样是一个独立的进程,您可以根据自己的要求将其静态或动态地链接到您的应用程序。SQLite直接访问其存储文件。
为什么选择SQLite?
- SQLite不需要单独的服务器进程或系统来运行(无服务器)。
- SQLite具有零配置,这意味着无需设置或管理。
- 一个完整的SQLite数据库存储在一个跨平台的磁盘文件中。
- SQLite非常小且重量轻,完全配置小于400KiB或小于250KiB,省略了可选功能。
- SQLite是独立的,这意味着没有外部依赖关系。
- SQLite 事务完全符合 ACID,允许从多个进程或线程进行安全访问。
- SQLite 支持 SQL92 (SQL2) 标准中的大多数查询语言功能。
- SQLite 是用 ANSI-C 编写的,提供简单易用的 API。
- SQLite 可在 UNIX(Linux、Mac OS-X、Android、iOS)和 Windows(Win32、WinCE、WinRT)上使用。
SQLite简史
- 2000 - D. Richard Hipp 设计了 SQLite,其目的是无需管理即可运行程序。
- 2000年 - 8月,SQLite 1.0与GNU数据库管理器一起发布。
- 2011 - Hipp 宣布将 UNQl 接口添加到 SQLite DB 并开发 UNQLite(面向文档的数据库)。
SQLite 限制
下表列出了 SQLite 中 SQL92 不支持的功能。
Sr.No. | 功能与描述 |
---|---|
1 | 右外连接仅实现 LEFT OUTER JOIN。 |
2 | 全外联接仅实现 LEFT OUTER JOIN。 |
3 | 更改表支持 ALTER TABLE 命令的 RENAME TABLE 和 ADD COLUMN 变体。不支持 DROP COLUMN、ALTER COLUMN、ADD CONSTRAINT。 |
4 | 触发器支持支持 FOR EACH ROW 触发器,但不支持 FOR EACH STATEMENT 触发器。 |
5 | 视图SQLite 中的 VIEW 是只读的。不能对视图执行 DELETE、INSERT 或 UPDATE 语句。 |
6 | 授予和撤销唯一可以应用的访问权限是底层操作系统的普通文件访问权限。 |
SQLite 命令
用于与关系数据库交互的标准 SQLite 命令类似于 SQL。它们是 CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP。这些命令可以根据其操作性质分为几组 -
DDL - 数据定义语言
Sr.No. | 命令和描述 |
---|---|
1 | 创造在数据库中创建新表、表的视图或其他对象。 |
2 | 改变修改现有数据库对象,如表。 |
3 | 落删除整个表、表的视图或数据库中的其他对象。 |
DML - 数据操作语言
Sr.No. | 命令和描述 |
---|---|
1 | 插入 创建记录 |
2 | 更新 修改记录 |
3 | 删除 删除记录 |
DQL - 数据查询语言
Sr.No. | 命令和描述 |
---|---|
1 | 选择从一个或多个表中检索某些记录 |