SQLite 入门指南:轻松上手轻量级数据库(一)

SQLite 是一个轻量级的、自给自足的、无服务器的、零配置的 SQL 数据库引擎。它被广泛应用于各种操作系统和设备中,包括桌面应用、移动应用和嵌入式系统。本文将详细介绍 SQLite 的基本概念、安装方法、常用命令和最佳实践,帮助你快速上手并高效使用 SQLite。

适合谁阅读?

本文适合以下几类读者:

  • 初学者:对数据库有基本了解,希望学习如何使用 SQLite 进行数据管理和操作。
  • 开发者:希望在项目中集成 SQLite,了解其特性和应用场景。
  • 数据科学家:需要一个轻量级且易于管理的数据库来处理数据集。

阅读前的准备

在开始学习本教程之前,建议你具备以下知识:

  • 数据库基础:了解什么是数据库,尤其是关系型数据库管理系统(RDBMS)。
  • 编程语言:熟悉至少一种编程语言,如 Python、Java 或 C++。

编译和执行 SQLite 程序

如果你没有安装 SQLite,可以通过以下几种方式快速体验:

  • 在线 IDE:访问 SQLite 在线 IDE,无需安装即可在云端体验 SQLite 的强大功能。
  • 本地安装:按照本文后续部分的指导,安装 SQLite 并在本地环境中进行开发。

SQLite 常用函数

SQLite 提供了丰富的内置函数,涵盖了字符串处理、日期时间操作、数学计算等多个方面。这些函数可以帮助你更高效地处理数据。以下是一些常用的 SQLite 函数:

  • 字符串函数:LOWER(), UPPER(), TRIM(), REPLACE()
  • 日期时间函数:DATE(), TIME(), DATETIME(), STRFTIME()
  • 数学函数:ABS(), ROUND(), CEIL(), FLOOR()

有用的 SQLite 资源

以下是一些有用的 SQLite 资源,可以帮助你进一步学习和使用 SQLite:

什么是 SQLite?

SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个轻量级的数据库,可以直接访问其存储文件,而无需额外的配置或管理。

为什么选择 SQLite?

SQLite 具有以下优势:

  • 无服务器:不需要单独的服务器进程或操作系统管理。
  • 零配置:无需安装或配置,开箱即用。
  • 单文件存储:一个完整的 SQLite 数据库存储在一个单一的跨平台磁盘文件中。
  • 轻量级:完全配置时小于 400KiB,省略可选功能时小于 250KiB。
  • 自给自足:不依赖外部库或组件。
  • ACID 事务:支持事务的原子性、一致性、隔离性和持久性。
  • 广泛支持:支持 SQL92 标准的大部分查询语言功能。
  • 跨平台:可在多种操作系统上运行,包括 Unix(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)。

SQLite 的历史

SQLite 由 D. Richard Hipp 于 2000 年设计,旨在为程序提供一个无需管理的数据库解决方案。以下是 SQLite 的一些重要里程碑:

  • 2000年:SQLite 1.0 发布,作为 GNU 数据库管理器的一部分。
  • 2011年:Hipp 宣布为 SQLite DB 添加 UNQL 接口,开发了 UNQLite(面向文档的数据库)。

SQLite 的局限性

尽管 SQLite 功能强大,但它也有一些局限性:

  • 不支持 RIGHT OUTER JOIN 和 FULL OUTER JOIN:仅支持 LEFT OUTER JOIN。
  • ALTER TABLE 限制:仅支持 RENAME TABLE 和 ALTER TABLE 的 ADD COLUMN 变体,不支持 DROP COLUMN、ALTER COLUMN 和 ADD CONSTRAINT。
  • 触发器限制:仅支持 FOR EACH ROW 触发器,不支持 FOR EACH STATEMENT 触发器。
  • 视图限制:视图是只读的,无法在其上执行 DELETE、INSERT 或 UPDATE 语句。
  • 权限管理:仅能应用底层操作系统的正常文件访问权限。

SQLite 命令

SQLite 提供了一套标准的 SQL 命令,用于与关系数据库进行交互。这些命令可以分为以下几类:

DDL - 数据定义语言

命令描述
CREATE创建新的表、视图或其他数据库对象。
ALTER修改已有的数据库对象,如表。
DROP删除表、视图或其他数据库对象。

DML - 数据操作语言

命令描述
INSERT插入新记录。
UPDATE更新现有记录。
DELETE删除记录。

DQL - 数据查询语言

命令描述
SELECT从一个或多个表中检索记录。

在不同平台上安装 SQLite

Windows

  1. 访问 SQLite 下载页面,下载预编译的二进制文件。
  2. 下载 sqlite-tools-win32-.zip 和 sqlite-dll-win32-.zip 压缩文件。
  3. 创建文件夹 C:\sqlite,并将上述压缩文件解压到该文件夹。
  4. 将 C:\sqlite 添加到 PATH 环境变量。
  5. 打开命令提示符,输入 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

  1. 使用以下命令检查是否已安装 SQLite:
$ sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
  1. 如果未安装,从 SQLite 下载页面 下载源代码包 sqlite-autoconf-*.tar.gz。
  2. 解压并编译安装:
$ tar xvzf sqlite-autoconf-3071502.tar.gz
$ cd sqlite-autoconf-3071502
$ ./configure --prefix=/usr/local
$ make
$ make install

Mac OS X

  1. 最新版的 Mac OS X 已预装 SQLite,可以使用以下命令验证:
$ sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>
  1. 如果未安装,从 SQLite 下载页面 下载源代码包 sqlite-autoconf-*.tar.gz。
  2. 解压并编译安装:
$ tar xvzf sqlite-autoconf-3071502.tar.gz
$ cd sqlite-autoconf-3071502
$ ./configure --prefix=/usr/local
$ make
$ make install

SQLite 点命令

SQLite 提供了一系列点命令,用于管理和操作数据库。这些命令不以分号 ; 结束,而是以点 . 开头。以下是一些常用的点命令:

获取点命令列表

在 SQLite 命令提示符下输入 .help,可以查看所有可用的点命令:

sqlite>.help

常用点命令

命令描述
.backup ?DB? FILE备份数据库到文件。
.databases列出所有数据库及其文件路径。
.dump ?TABLE?以 SQL 文本格式导出数据库。
.exit退出 SQLite 命令行。
.import FILE TABLE从文件导入数据到表。
.indices ?TABLE?列出表的所有索引。
.mode MODE设置输出模式。
.output FILENAME将输出重定向到文件。
.schema ?TABLE?显示表的创建语句。
.tables ?PATTERN?列出匹配模式的表。

格式化输出

你可以使用以下点命令来格式化输出:

sqlite>.header on
sqlite>.mode column
sqlite>.timer on

示例输出

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0
CPU Time: user 0.000000 sys 0.000000

SQLite 主表

SQLite 使用 sqlite_master 表来存储数据库的元数据。你可以使用以下命令查看 sqlite_master 表的结构:

sqlite>.schema sqlite_master

输出示例:

CREATE TABLE sqlite_master (
  type text,
  name text,
  tbl_name text,
  rootpage integer,
  sql text
);

SQLite 语法要点

大小写敏感性

SQLite 对大小写不敏感,但有些命令如 GLOB 和 glob 在 SQLite 语句中有不同的含义。

注释

SQLite 支持两种注释方式:

  • 单行注释:以 -- 开始,扩展到行尾。
  • 多行注释:以 / 开始,以 / 结束。

示例

-- 这是一个单行注释
/*
这是一个
多行注释
*/

SQLite 语句

所有 SQLite 语句以分号 ; 结束。以下是一些常见的 SQLite 语句:

  • ANALYZE:收集关于数据库表的统计信息,用于优化查询性能。
ANALYZE;
ANALYZE database_name;
ANALYZE database_name.table_name;
  • AND/OR 子句:用于组合条件。
SELECT column1, column2, ..., columnN
FROM table_name

WHERE condition1 AND condition2 OR condition3;

总结

通过本文的学习,你应该对 SQLite 有了全面的了解,包括其基本概念、安装方法、常用命令和语法要点。SQLite 以其轻量级、易用性和强大的功能,成为许多应用的理想选择。希望本文能帮助你在项目中高效地使用 SQLite。