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 | RIGHT OUTER JOIN 只实现了LEFT OUTER JOIN。 |
2 | FULL OUTER JOIN 只实现了LEFT OUTER JOIN。 |
3 | ALTER TABLE 支持ALTER TABLE命令的RENAME TABLE和ADD COLUMN变体。不支持DROP COLUMN、ALTER COLUMN和ADD CONSTRAINT。 |
4 | 触发器支持 支持FOR EACH ROW触发器,但不支持FOR EACH STATEMENT触发器。 |
5 | 视图 SQLite中的视图是只读的。不能在视图上执行DELETE、INSERT或UPDATE语句。 |
6 | 授权和撤销 只能应用正常的文件访问权限,无法进行其他访问权限设置。 |
SQLite命令
与关系型数据库进行交互的标准SQLite命令与SQL相似。它们包括CREATE、SELECT、INSERT、UPDATE、DELETE和DROP。这些命令可以根据它们的操作性质分为不同的组。
DDL – 数据定义语言
序号 | 命令及描述 |
---|---|
1 | CREATE 创建一个新的表,或数据库中的视图或其他对象。 |
2 | ALTER 修改一个已存在的数据库对象,比如表。 |
3 | DROP 删除整个表,或数据库中的视图或其他对象。 |
DML – 数据操纵语言
序号 | 指令 & 描述 |
---|---|
1 | INSERT 创建记录 |
2 | UPDATE 修改记录 |
3 | DELETE 删除记录 |
数据查询语言(DQL)
序号 | 命令和描述 |
---|---|
1 | SELECT 从一个或多个表中检索特定的记录 |