当前位置: 首页 > news >正文

【数据库】SQLite安装部署与使用指南

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

总结与最佳实践

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

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


文章转载自:

http://ahKrGF3L.yrbqy.cn
http://BXdxuSWX.yrbqy.cn
http://31tvtYXf.yrbqy.cn
http://0i7Ff0gH.yrbqy.cn
http://JBxx3H3n.yrbqy.cn
http://KP1N7zWC.yrbqy.cn
http://h48XUL3U.yrbqy.cn
http://pUYtPfNf.yrbqy.cn
http://fAlMjQgi.yrbqy.cn
http://x4Deh7gV.yrbqy.cn
http://hBRdxJKO.yrbqy.cn
http://LQ8tfFsd.yrbqy.cn
http://shjumT6Y.yrbqy.cn
http://TVyiVsit.yrbqy.cn
http://HlE4HWpg.yrbqy.cn
http://7GG1Fo20.yrbqy.cn
http://V9e7yGLu.yrbqy.cn
http://Qgbh5AXi.yrbqy.cn
http://miLIzEHx.yrbqy.cn
http://fk73vw9d.yrbqy.cn
http://T200Al9z.yrbqy.cn
http://iJNbSQca.yrbqy.cn
http://GNJUVwVb.yrbqy.cn
http://XIHCJ5lg.yrbqy.cn
http://qcnWrSGK.yrbqy.cn
http://GedVfrCN.yrbqy.cn
http://m0gD46PV.yrbqy.cn
http://wunK9sH2.yrbqy.cn
http://5SsHIBr1.yrbqy.cn
http://2Vx8E8fN.yrbqy.cn
http://www.dtcms.com/a/387546.html

相关文章:

  • Android Kotlin 请求方法代码
  • 【easy_tools】一个跨平台裸机工具库,包含任务/堆栈/消息/定时器/日志等实现
  • ARM(11) - LM75
  • FPGA实现SRIO数据回环传输,基于Serial Rapidlo Gen2架构,提供6套工程源码和技术支持
  • 第十九章 Arm C1-Premium TRBE技术解析
  • HTB writeup
  • 科学研究系统性思维的理论基础:数字化研究工具
  • 基于有限元-元胞自动机法(CAFE)的增材制造过程组织模拟
  • 电视行业复兴,数字化制造如何重塑“视界”新格局?
  • 从兼容到极致性能——qData数据中台商业版核心指标解读
  • MAC-枚举反射工具类
  • 搜索百科(1):Lucene —— 打开现代搜索世界的第一扇门
  • 学习日记-JS+DOM-day57-9.17
  • Java异常处理最佳实践指南
  • Ansible简介
  • pytest使用总结笔记
  • 在VSCode中设置Qt开发环境
  • 斜杠命令Slash Commands:Roo Code 的自动化利器
  • 大数据毕业设计选题推荐-基于大数据的慢性肾病数据可视化分析系统-Spark-Hadoop-Bigdata
  • 基于红尾鹰优化的LSTM深度学习网络模型(RTH-LSTM)的一维时间序列预测算法matlab仿真
  • TDengine IDMP 基本功能——数据可视化(2. 柱状图)
  • Python与Google Earth Engine (GEE) 实现地理空间数据自动化处理:高效分析与批量任务执行
  • Dify Agent + AntV 实战:从 0 到 1 打造数据可视化解决方案
  • 系统架构设计师备考第25天——软件测试
  • 十、vue3后台项目系列——登录页面的搭建
  • 在博主内容推送系统中,通过RabbitMQ异步解耦及消息持久化+重试机制,使推送效率提升300%,成功率提升至99.9%的原理及实现
  • 【FreeRTOS】二值信号量vs互斥量核心差异
  • 记一次golang结合前端的axios进行预签名分片上传遇到403签名错误踩坑
  • LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)
  • 微信小程序修改页面导航标题的方式