SQLite 以其零配置轻量级著称,所以整个过程会非常简单。

核心概念:SQLite 与其他数据库的区别

在开始之前,最重要的一点是理解 SQLite 的独特之处:

  • 无需安装数据库服务器:不像 MySQL、PostgreSQL 等需要一个“服务端”进程来运行。SQLite 数据库就是一个单一的、普通的磁盘文件(通常以 .db.sqlite 为后缀)。
  • 无需配置:没有服务,自然也没有需要管理的用户权限、端口、配置文件等。
  • 嵌入式数据库:SQLite 库直接嵌入到你的应用程序中。应用程序通过调用 SQLite 库来直接读写磁盘上的数据库文件。

因此,所谓的“安装 SQLite”实际上是指:获取并准备好 sqlite3 命令行工具或编程语言的 SQLite 库/驱动


第一部分:安装 SQLite 命令行工具

命令行工具 (sqlite3sqlite3.exe) 让你可以手动创建、管理和查询数据库文件,对于学习和调试非常有用。

1. Windows 系统

方法一:官方预编译二进制文件(推荐)

  1. 访问 SQLite 官网下载页面:https://sqlite.org/download.html
  2. 找到 Precompiled Binaries for Windows 部分。
  3. 下载两个文件:
    • sqlite-tools-win32-x86-*.zip (包含命令行工具)
    • sqlite-dll-win32-x86-*.zip (如果需要开发,包含 DLL 文件)
  4. 将下载的 sqlite-tools-win32-x86-*.zip 解压到你喜欢的目录,例如 C:\sqlite
  5. 将解压后的目录路径(例如 C:\sqlite)添加到系统的 PATH 环境变量中。
    • 右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量” -> 在“系统变量”中找到并编辑 Path -> 将你的 SQLite 目录路径添加进去。
  6. 打开命令提示符 (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 表。

  1. 打开/创建数据库

    sqlite3 test.db
    

    这条命令会打开(如果存在)或创建(如果不存在) test.db 文件,并进入 sqlite> 提示符。

  2. 创建表
    sqlite> 提示符下输入 SQL 语句:

    CREATE TABLE users (
        id INTEGER PRIMARY KEY,
        name TEXT NOT NULL,
        email TEXT UNIQUE
    );
    
  3. 插入数据

    INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
    INSERT INTO users (name, email) VALUES ('李四', 'lisi@example.com');
    
  4. 查询数据

    -- 查询所有数据
    SELECT * FROM users;
    
    -- 条件查询
    SELECT * FROM users WHERE name = '张三';
    
  5. 常用命令行元命令 (以点号 . 开头)

    • .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 包。

  1. 安装驱动

    npm install sqlite3
    
  2. 代码示例

    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”,有很多可以用于浏览和查询的插件。

总结与最佳实践

  1. 极简部署:将你的应用程序和那个唯一的 .db 文件一起拷贝到新机器上,就可以直接运行,无需任何数据库服务配置。
  2. 适用场景:SQLite 非常适合嵌入式设备桌面应用程序小型网站移动应用(iOS 和 Android 都原生支持)以及开发和测试环境。
  3. 不适用场景:高并发写入(写操作会锁定整个数据库文件)、超大规模数据、需要复杂客户端权限管理的网络应用。这些场景更适合 MySQL/PostgreSQL 等客户端/服务器模式的数据库。
  4. 备份:备份 SQLite 数据库非常简单,直接复制 .db 文件即可。也可以在命令行中使用 .backup [file] 命令。

希望这份详细的指南能帮助你快速上手 SQLite!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐