SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 源代码不受版权限制。
特点
优点
整个数据库由一个文件构成,可移植性好
支持SQL,省略一些功能,增加额外功能
简洁而功能丰富,适合开发、测试
缺点
缺少用户管理(权限管理)
技术上已经很快,无法再通过优化实现更高性能
应用场景
需要可移植性、不需要扩展的嵌入式应用程序(单用户本地应用、游戏等)
替代普通的磁盘访问,从而从SQL的简便性中获利
简单的测试
不适用场景
多用户(访问)的应用程序
写入量高的程序(SQLite同一时刻只允许一个写操作)
安装
Windows : 下载
sqlite-tools-*.zip
和sqlite-dll-*.zip
两个压缩包,解压到一个文件夹中;添加到环境变量Path中http://www.sqlite.org/download.htmlLinux : 预装。若无,下载
sqlite-autoconf-*.tar.gz
并解压($tar xvfz sqlite-autoconf-*.tar.gz
$cd sqlite-autoconf-*
$./configure --prefix=/usr/local
$make
$make install
)Mac OS : 略(类似Linux)。
命令
$sqlite3
: 进入SQLite命令提示符
$.help
: 获取可用点命令
语法
大小写敏感
- 不区分大小写,部分命令大小写敏感,如:GLOB/glob含义不同
注释
-- This is a single line comment.
/* This is a comment. */
SQLite 数据类型
存储类
NULL : NULL值
INTEGER : 带符号整数(1/2/3/4/6/8字节)
REAL : 浮点值(8字节IEEE浮点数)
TEXT : 文本字符串(UTF-8/UTF-16BE/UTF-16LE)
BLOB : 根据输入的类型存储
亲和(Affinity)类型、类型名称
SQLite支持列的亲和类型概念。任何列仍然可以存储任何类型的数据,当数据插入时,该字段的数据将会优先采用亲缘类型作为该值的存储方式
- TEXT : 数值型数据在被插入之前,需要先被转换为文本格式,之后再插入到目标字段中
- 数据类型名称 : CHARACTER(20)、VARCHAR(255)、VARYING CHARACTER(255)、NCHAR(55)、NATIVE CHARACTER(70)、NVARCHAR(100)、TEXT、CLOB
NUMERIC : 当文本数据被插入到亲缘性为NUMERIC的字段中时,如果转换操作不会导致数据信息丢失以及完全可逆,那么SQLite就会将该文本数据转换为INTEGER或REAL类型的数据,如果转换失败,SQLite仍会以TEXT方式存储该数据。对于NULL或BLOB类型的新数据,SQLite将不做任何转换,直接以NULL或BLOB的方式存储该数据(对于浮点格式的常量文本,如”30000.0”,如果该值可以转换为INTEGER同时又不会丢失数值信息,那么SQLite就会将其转换为INTEGER的存储方式)
- 数据类型名称 : NUMERIC、DECIMAL(10,5)、BOOLEAN、DATE、DATETIME
INTEGER : 规则等同于NUMERIC,唯一差别是在执行CAST表达式时
- 数据类型名称 : INT、INTEGER、TINYINT、SMALLINT、MEDIUMINT、BIGINT、UNSIGNED BIG INT、INT2、INT8
REAL : 规则基本等同于NUMERIC,唯一的差别是不会将”30000.0”这样的文本数据转换为INTEGER存储方式
- 数据类型名称 : REAL、DOUBLE、DOUBLE PRECISION、FLOAT
NONE : 不做任何的转换,直接以该数据所属的数据类型进行存储
- 数据类型名称 : BLOB、no datatype specified
Boolean数据类型
SQLite没有Boolean存储类,布尔值存储为0(False)和1(True)
Date 与 Time 数据类型
SQLite没有专用于存储日期和时间的存储类,而存储为TEXT、REAL或INTEGER值
TEXT : 格式为 “YYYY-MM-DD HH:MM:SS.SSS” 的日期
REAL : 从公元前 4714 年 11 月 24 日格林尼治时间的正午开始算起的天数
INTEGER : 从 1970-01-01 00:00:00 UTC 算起的秒数