SQLite

SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 源代码不受版权限制。

特点

优点

  • 整个数据库由一个文件构成,可移植性好

  • 支持SQL,省略一些功能,增加额外功能

  • 简洁而功能丰富,适合开发、测试

缺点

  • 缺少用户管理(权限管理)

  • 技术上已经很快,无法再通过优化实现更高性能

应用场景

  • 需要可移植性、不需要扩展的嵌入式应用程序(单用户本地应用、游戏等)

  • 替代普通的磁盘访问,从而从SQL的简便性中获利

  • 简单的测试

不适用场景

  • 多用户(访问)的应用程序

  • 写入量高的程序(SQLite同一时刻只允许一个写操作)

安装

  1. Windows : 下载sqlite-tools-*.zipsqlite-dll-*.zip两个压缩包,解压到一个文件夹中;添加到环境变量Path中http://www.sqlite.org/download.html

  2. Linux : 预装。若无,下载sqlite-autoconf-*.tar.gz并解压($tar xvfz sqlite-autoconf-*.tar.gz $cd sqlite-autoconf-* $./configure --prefix=/usr/local $make $make install)

  3. Mac OS : 略(类似Linux)。

命令

$sqlite3 : 进入SQLite命令提示符

$.help : 获取可用点命令

more…

语法

大小写敏感

  • 不区分大小写,部分命令大小写敏感,如: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 算起的秒数


参考 : http://www.runoob.com/sqlite/