现在可移动通信设备、物联网、可穿戴智能设备,智能手机盛行,其主流操作系统均采用Android或MacOS,为存储App程序的数据,系统允许App单独使用其私有的SQLite数据库。这篇入门文章不仅提供了SQLite数据库其潜在的微型内核和适合手机存储特性,并示例介绍了SQLite的基本使用特性功能和局限以及类似Hibernate功能的反射机制来进行关系型数据库的增删改查等基本功能特性。
与Oracle和Microsoft SQL Server等运行在数据库Server上的重量级Database,SQLite数据库仅仅包含在系统Disk上的一个DB File中。例如Anroid的App将其私有数据库SQLite存储在特定的文件目录中:/data/data/<application package name>/databases/<databasename.db>。SQLite数据库采用了标准的文件格式,可以在多种操作系统中跨平台使用,数据库的文件采用了统一的格式,使得建立好的数据库db文件可以在多种操作系统中运行。还可以使用系统调试监视服务DDMS的文件浏览器或SQLite官方网站提供的数据库管理小程序来进行查看和管理。
1. SQLite3 安装
SQLite 的一个重要的特性是零配置的,这意味着不需要复杂的安装或管理。
· 在 Windows 上安装 SQLite
从 Windows 区下载预编译的二进制文件。
您需要下载 sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件。
创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。
添加 C:\sqlite 到 PATH 环境变量,最后在命令提示符下,使用 sqlite3 命令,将显示如下结果。
C:\>sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
· 在 Linux 上安装 SQLite
目前,几乎所有版本的 Linux 操作系统都附带 SQLite。所以,只要使用下面的命令来检查您的机器上是否已经安装了 SQLite。
$ sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05Enter ".help" for instructionsEnter SQL statements terminated with a ";"
sqlite>
如果没有看到上面的结果,那么就意味着没有在 Linux 机器上安装 SQLite。因此,让我们按照下面的步骤安装 SQLite:
请访问 SQLite 下载页面,从源代码区下载 sqlite-autoconf-*.tar.gz。
步骤如下:
$ tar xvzf sqlite-autoconf-3071502.tar.gz
$ cd sqlite-autoconf-3071502$ ./configure --prefix=/usr/local$ make
$ make install
上述步骤将在 Linux 机器上安装 SQLite,您可以按照上述讲解的进行验证。
· 在 Mac OS X 上安装 SQLite
最新版本的 Mac OS X 会预安装 SQLite,但是如果没有可用的安装,只需按照如下步骤进行:
请访问 SQLite 下载页面,从源代码区下载 sqlite-autoconf-*.tar.gz。
步骤如下:
$ tar xvzf sqlite-autoconf-3071502.tar.gz
$ cd sqlite-autoconf-3071502$ ./configure --prefix=/usr/local$ make
$ make install
上述步骤将在 Mac OS X 机器上安装 SQLite,您可以使用下列命令进行验证:
$ sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05Enter ".help" for instructionsEnter SQL statements terminated with a ";"
sqlite>
2. 命令行探秘SQLite3
由于SQLite3数据库内核微小,使用官方的管理软件即SQLite3.exe即可对数据库进行各种操作,有条件的读者想简约的可视化操作,可下载SQLiteStudio软件对数据库进行可视化操作。
· 进入SQLite3.exe命令行
R:\Users\wang\workspace\sqltest>sqlite3
SQLite version 3.38.1 2022-03-12 13:37:29
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to re
open on a persistent database.
· 列出可用数据库文件
sqlite> .show
echo: off
eqp: off
explain: auto
headers: off
mode: list
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
filename: test.db;
· 列表显示可用数据库
sqlite> .databases
main: R:\Users\wang\workspace\sqltest\test.db r/w
· 列表显示可用数据库表
sqlite> .tables
dustcart rubbish
· 列表显示表索引
sqlite> .indices dustcart
sqlite_autoindex_dustcart_1
· 列表显示表的数据库模式schema
sqlite> .schema dustcart
CREATE TABLE dustcart (ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,NUMBER TEX
T ,ADDRESS TEXT ,WEIGHT REAL ,REMARK TEXT );
sqlite> .schema
CREATE TABLE rubbish (ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,NUMBER TEXT
,ADDRESS TEXT ,WEIGHT REAL ,REMARK TEXT );
CREATE TABLE dustcart (ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,NUMBER TEX
T ,ADDRESS TEXT ,WEIGHT REAL ,REMARK TEXT );
sqlite>
· 如果此处说的不详细或者未解决读者遇到的问题,可以使用help命令具体查看各种命令的使用方式
sqlite> .help
.archive ... Manage SQL archives
.auth ON|OFF Show authorizer callbacks
.backup ?DB? FILE Backup DB (default "main") to FILE
.bail on|off Stop after hitting an error. Default OFF
.binary on|off Turn binary output on or