【数据库】SQLite安装部署与使用指南
SQLite 以其零配置和轻量级著称,所以整个过程会非常简单。
核心概念:SQLite 与其他数据库的区别
在开始之前,最重要的一点是理解 SQLite 的独特之处:
- 无需安装数据库服务器:不像 MySQL、PostgreSQL 等需要一个“服务端”进程来运行。SQLite 数据库就是一个单一的、普通的磁盘文件(通常以
.db
或.sqlite
为后缀)。 - 无需配置:没有服务,自然也没有需要管理的用户权限、端口、配置文件等。
- 嵌入式数据库:SQLite 库直接嵌入到你的应用程序中。应用程序通过调用 SQLite 库来直接读写磁盘上的数据库文件。
因此,所谓的“安装 SQLite”实际上是指:获取并准备好 sqlite3
命令行工具或编程语言的 SQLite 库/驱动。
第一部分:安装 SQLite 命令行工具
命令行工具 (sqlite3
或 sqlite3.exe
) 让你可以手动创建、管理和查询数据库文件,对于学习和调试非常有用。
1. Windows 系统
方法一:官方预编译二进制文件(推荐)
- 访问 SQLite 官网下载页面:https://sqlite.org/download.html
- 找到 Precompiled Binaries for Windows 部分。
- 下载两个文件:
sqlite-tools-win32-x86-*.zip
(包含命令行工具)sqlite-dll-win32-x86-*.zip
(如果需要开发,包含 DLL 文件)
- 将下载的
sqlite-tools-win32-x86-*.zip
解压到你喜欢的目录,例如C:\sqlite
。 - 将解压后的目录路径(例如
C:\sqlite
)添加到系统的PATH
环境变量中。- 右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量” -> 在“系统变量”中找到并编辑
Path
-> 将你的 SQLite 目录路径添加进去。
- 右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量” -> 在“系统变量”中找到并编辑
- 打开命令提示符 (CMD) 或 PowerShell,输入
sqlite3
,如果出现类似下面的提示符,则表示安装成功。SQLite version 3.37.2 2022-01-06 13:25:41 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite>
方法二:使用包管理器 Chocolatey
如果你安装了 Chocolatey,只需一行命令:
choco install sqlite
2. macOS 系统
macOS 系统通常已经预装了 SQLite。打开“终端”(Terminal),直接输入 sqlite3
即可使用。
如果你想安装最新版本,可以使用 Homebrew:
brew install sqlite
安装后,新版本的路径可能是 /usr/local/opt/sqlite/bin/sqlite3
,你可能需要将其加入 PATH。
3. Linux 系统 (如 Ubuntu/Debian)
大多数 Linux 发行版也可以通过包管理器轻松安装。
使用 apt:
sudo apt update
sudo apt install sqlite3
安装完成后,同样在终端输入 sqlite3
验证。
第二部分:使用 SQLite 命令行工具
假设我们要创建一个名为 test.db
的数据库,并管理一张 users
表。
-
打开/创建数据库
sqlite3 test.db
这条命令会打开(如果存在)或创建(如果不存在)
test.db
文件,并进入sqlite>
提示符。 -
创建表
在sqlite>
提示符下输入 SQL 语句:CREATE TABLE users (id INTEGER PRIMARY KEY,name TEXT NOT NULL,email TEXT UNIQUE );
-
插入数据
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com'); INSERT INTO users (name, email) VALUES ('李四', 'lisi@example.com');
-
查询数据
-- 查询所有数据 SELECT * FROM users;-- 条件查询 SELECT * FROM users WHERE name = '张三';
-
常用命令行元命令 (以点号 . 开头)
.help
:查看所有元命令的帮助。.tables
:列出当前数据库中的所有表。.schema [table_name]
:查看表的结构(建表语句)。.databases
:显示当前打开的数据库文件。.mode column
和.headers on
:让查询结果以更漂亮的列格式显示,并包含标题头。.mode column .headers on SELECT * FROM users;
.exit
或.quit
:退出 sqlite3 命令行工具。
第三部分:在编程语言中使用 SQLite
这才是 SQLite 真正发挥威力的地方。以下是一些流行语言的简单示例。
Python
Python 标准库中的 sqlite3
模块提供了对 SQLite 的支持,无需额外安装。
import sqlite3# 连接到数据库(如果不存在则创建)
conn = sqlite3.connect('example.db')# 创建一个游标对象
cursor = conn.cursor()# 执行 SQL 语句
cursor.execute('''CREATE TABLE IF NOT EXISTS stocks(date text, trans text, symbol text, qty real, price real)''')# 插入一条数据
cursor.execute("INSERT INTO stocks VALUES ('2023-10-01','BUY','AAPL',100,145.00)")# 提交事务(重要!否则更改不会保存)
conn.commit()# 查询数据
cursor.execute("SELECT * FROM stocks")
for row in cursor.fetchall():print(row)# 关闭连接
conn.close()
Node.js
需要使用 sqlite3
npm 包。
-
安装驱动:
npm install sqlite3
-
代码示例:
const sqlite3 = require('sqlite3').verbose();// 打开数据库连接 let db = new sqlite3.Database('./mydb.db', (err) => {if (err) {console.error(err.message);}console.log('Connected to the database.'); });// 执行 SQL db.serialize(() => {db.run(`CREATE TABLE IF NOT EXISTS users (name TEXT, email TEXT)`);let stmt = db.prepare("INSERT INTO users VALUES (?, ?)");stmt.run("王五", "wangwu@example.com");stmt.finalize();// 查询db.each("SELECT rowid AS id, name, email FROM users", (err, row) => {if (err) {console.error(err.message);}console.log(row.id + ": " + row.name + " - " + row.email);}); });// 关闭连接 db.close((err) => {if (err) {console.error(err.message);}console.log('Database connection closed.'); });
Java
需要使用 JDBC 驱动,可以从 https://github.com/xerial/sqlite-jdbc 下载 sqlite-jdbc
的 JAR 文件,或者通过 Maven/Gradle 引入。
Maven 依赖:
<dependency><groupId>org.xerial</groupId><artifactId>sqlite-jdbc</artifactId><version>3.42.0.0</version>
</dependency>
代码示例:
import java.sql.*;public class SQLiteDemo {public static void main(String[] args) {Connection conn = null;try {// 注册驱动并建立连接// JDBC URL 格式: jdbc:sqlite:path/to/database.dbconn = DriverManager.getConnection("jdbc:sqlite:test.db");Statement stmt = conn.createStatement();stmt.executeUpdate("CREATE TABLE IF NOT EXISTS users (id INTEGER, name TEXT)");stmt.executeUpdate("INSERT INTO users VALUES (1, 'Java User')");ResultSet rs = stmt.executeQuery("SELECT * FROM users");while (rs.next()) {System.out.println(rs.getInt("id") + " " + rs.getString("name"));}} catch (SQLException e) {System.err.println(e.getMessage());} finally {try {if (conn != null) conn.close();} catch (SQLException e) {System.err.println(e);}}}
}
第四部分:图形化管理工具(GUI)
对于不习惯命令行的人,可以使用图形化工具来管理 SQLite 数据库。
- DB Browser for SQLite (DB4S):最流行、免费的跨平台 GUI 工具。
- 官网:https://sqlitebrowser.org/
- 功能:创建数据库、设计表、浏览数据、执行 SQL 查询、导入/导出数据等。
- DBeaver:一款功能强大的通用数据库工具,也支持 SQLite。
- VS Code 扩展:在 VS Code 扩展商店中搜索 “SQLite”,有很多可以用于浏览和查询的插件。
总结与最佳实践
- 极简部署:将你的应用程序和那个唯一的
.db
文件一起拷贝到新机器上,就可以直接运行,无需任何数据库服务配置。 - 适用场景:SQLite 非常适合嵌入式设备、桌面应用程序、小型网站、移动应用(iOS 和 Android 都原生支持)以及开发和测试环境。
- 不适用场景:高并发写入(写操作会锁定整个数据库文件)、超大规模数据、需要复杂客户端权限管理的网络应用。这些场景更适合 MySQL/PostgreSQL 等客户端/服务器模式的数据库。
- 备份:备份 SQLite 数据库非常简单,直接复制
.db
文件即可。也可以在命令行中使用.backup [file]
命令。
希望这份详细的指南能帮助你快速上手 SQLite!