概述
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2021年已经接近有21个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
SQLite对于其他数据库有什么优势
1、不需要配置,
2、不需要安装和管理不需要一个单独的服务器进程或操作的系统(无服务器的)
3、一个完整的SQLite数据库存储在一个单一的跨平台的磁盘文件上
4、SQLite是非常小的,轻量级的数据库,完全配置时小于400KiB,省略可选功能配置时小于250KiB
5、SQLite是一个自给自足的数据库,这也就意味着不需要任何外部的依赖SQLite事务是完全兼容ACID的,允许从多个进程或线程安全访问
6、SQLite支持SQL92(SQL2)标准的大多数查询语言的功能SQLite使用ANSI-C编写的,并提供了简单和易于使用的APISQLite可在UINX(Linux,Max OS-X,Android,iOS)和Windows(Win32,WinCE,WinRT)中运行
SQLite的局限性:
在SQLite中,SQL92不支持的特性如下所示:RIGHT OUTER JOIN: 只实现了LEFT OUTER JOINFULL OUTER JOIN:
只实现了LEFT OUTER JOINALTER TABLE:
支持RENAME TABLE和ALTER TABLE的ADD COLUMN variants命令,
不支持DROP COLUMN、ALTER COLUMN、ADD CONSTRAINT Trigger支持:
支持FOR EACH ROW触发器,但不支持FOR EACH STATEMENT触发器VIEWS:
在SQLite中,视图是只读的,不能在视图中执行DELETE、INSERT或UPDATE语句GRANT 和 REVOKE:可以应用的唯一的访问权限是底层操作系统的正常文件访问权限
重要的关键字
SQLite Distinct 关键字
SQLite 的 DISTINCT 关键字与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。
有可能出现一种情况,在一个表中有多个重复的记录。当提取这样的记录时,DISTINCT 关键字就显得特别有意义,它只获取唯一一次记录,而不是获取重复记录。
语法
用于消除重复记录的 DISTINCT 关键字的基本语法如下:
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]
实例
假设 COMPANY 表有以下记录:
ID NAME AGE ADDRESS SALARY---------- ---------- ---------- ---------- ----------1 Paul 32 California 20000.02 Allen 25 Texas 15000.03 Teddy 23 Norway 20000.04 Mark 25 Rich-Mond 65000.05 David 27 Texas 85000.06 Kim 22 South-Hall 45000.07 James 24 Houston 10000.08 Paul 24 Houston 20000.09 James 44 Norway 5000.010 James 45 Texas 5000.0
首先,让我们来看看下面的 SELECT 查询,它将返回重复的工资记录:
sqlite> SELECT name FROM COMPANY;
这将产生以下结果:
NAME----------PaulAllenTeddyMarkDavidKimJamesPaulJamesJames
现在,让我们在上述的 SELECT 查询中使用 DISTINCT 关键字:
sqlite> SELECT DISTINCT name FROM COMPANY;
这将产生以下结果,没有任何重复的条目:
NAME----------PaulAllenTeddyMarkDavidKimJames