本教程帮助您了解什么是SQLite,它是如何与SQL不同,为什么需要它,和它的应用程序数据库处理方式。
SQLite是一个软件库,实现自足,服务器,零配置,事务性的SQL数据库引擎。SQLite是一个增长最快的数据库引擎,但是这是人气,没有多少增长率。SQLite源代码是属于公有领域。
什么是SQLite?
SQLite是一个过程中的库,实现自足,服务器,零配置,事务性的SQL数据库引擎。它是一个数据库,它是零配置,这意味着其他数据库一样,不需要在系统中配置。
像其他数据库,SQLite引擎不是一个独立的过程,可以按应用程序要求连结静态或动态。 SQLite 直接访问其存储文件。
为什么要用SQLite?
-
SQLite不需要一个单独的服务器进程或系统操作(服务器)。
-
SQLite 不需要配置,这意味着没有需要安装或管理。
-
一个完整的SQLite数据库存储在一个单一的跨平台的磁盘文件。
-
SQLite是非常小,重量轻,小于400KiB完全配置或小于250KiB的省略可选功能。
-
SQLite是自足的,这意味着不需要任何外部的依赖。
-
SQLite的交易是完全符合ACID,允许多个进程或线程安全访问。
-
SQLite支持大多数(SQL2)符合SQL92标准的查询语言功能。
-
SQLite是在ANSI-C编写的,并提供了简单和易于使用的API。
-
SQLite可在UNIX(在Linux,Mac OS-X,Android,IOS)和Windows(Win32中,WINCE,WinRT的)中运行。
历史:
-
2000 -- D. 理查德·希普设计SQLite是为经营程序所需的任何管理的目的。
-
2000 -- 在八月的SQLite1.0发布用GNU的数据库管理器。
-
2011 -- 希普(Hipp)宣布,以添加UNQl的接口SQLite的DB和发展UNQLite(面向文档的数据库)。
SQLite的局限性:
有几个SQL92 的在SQLite中不支持的功能如下所示:
特性 | 描述 |
---|---|
RIGHT OUTER JOIN | Only LEFT OUTER JOIN is implemented. |
FULL OUTER JOIN | Only LEFT OUTER JOIN is implemented. |
ALTER TABLE | The RENAME TABLE and ADD COLUMN variants of the ALTER TABLE command are supported. The DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT not supported. |
Trigger support | FOR EACH ROW triggers are supported but not FOR EACH STATEMENT triggers. |
VIEWs | VIEWs in SQLite are read-only. You may not execute a DELETE, INSERT, or UPDATE statement on a view. |
GRANT and REVOKE | The only access permissions that can be applied are the normal file access permissions of the underlying operating system. |
SQLite的命令:
类似SQL与关系数据库进行交互的标准SQLite命令。他们创建 CREATE, SELECT, INSERT, UPDATE, DELETE 和 DROP。这些命令组基于其业务性质可分为:
DDL - 数据定义语言:
命令 | 描述 |
---|---|
CREATE | Creates a new table, a view of a table, or other object in database |
ALTER | Modifies an existing database object, such as a table. |
DROP | Deletes an entire table, a view of a table or other object in the database. |
DML - 数据操纵语言:
命令 | 描述 |
---|---|
INSERT | Creates a record |
UPDATE | Modifies records |
DELETE | Deletes records |
DQL - 数据查询语言:
命令 | 描述 |
---|---|
SELECT | Retrieves certain records from one or more tables |