【数据库】SQLite安装部署与使用指南
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.db
conn = 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!
更多推荐
所有评论(0)