SQLite简介:轻量级数据库入门

SQLite 是一种轻量级、完全自包、无服务器的数据库引擎,常被应用于嵌入式系统、移动设备和中小型应用中。与 MySQL 或 PostgreSQL 这样的传统关系型数据库管理系统不同,SQLite 是基于文件的,需要最少的配置,是本地存储解决方案的理想选择。

本文将探索 SQLite 的基础概念、架构以及如何创建和管理 SQLite 数据库。


为什么选择 SQLite?

SQLite 提供了不带任何复杂举要的优势:

  1. 轻量且可离带:SQLite 是一个大小小于 1MB 的单个 C 库,无需安装或设置。
  2. 无服务器:它无需独立的服务器过程,易于集成到应用中。
  3. 跨平台:SQLite 数据库文件在各种平台上保持完全兼容,可在 Windows、macOS 和 Linux 上通用。
  4. ACID 丰富性:即使是轻量级引擎,SQLite 仍然支持业务的 Atomicity、Consistency、Isolation和 Durability 特性。
  5. 开源免费:SQLite 免费使用,并且具备公共领域证书。

SQLite 快速入门

要开始使用 SQLite,您需要安装 SQLite 命令行界面(CLI),或者使用指定程序语言支持 SQLite 的库,如 Python 或 C++。

安装方法
  1. 在 Windows 上

    • SQLite 官方网站 下载 SQLite 工具集合。
    • 解压后将目录添加到系统 PATH。
  2. 在 Linux 上

    bash 复制代码
    sudo apt update
    sudo apt install sqlite3
  3. 在 macOS 上

    macOS 预装了 SQLite。您可以通过运行以下命令验证:

    bash 复制代码
    sqlite3 --version

创建您的第一个 SQLite 数据库
步骤1:创建数据库

您可以通过打开 SQLite CLI 并指定一个数据库文件来创建新的数据库:

bash 复制代码
sqlite3 my_database.db

该命令将创建一个名为 my_database.db 的新数据库文件,如果这个文件存在,则打开它。

步骤2:创建表

进入 SQLite CLI 后,您可以使用 CREATE TABLE 命令创建一个表:

sql 复制代码
CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
步骤3:插入数据

您可以使用 INSERT INTO 命令向 users 表中插入数据:

sql 复制代码
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
步骤4:查询数据

通过 SELECT 命令从表中查询数据:

sql 复制代码
SELECT * FROM users;
步骤5:更新数据

使用 UPDATE 命令修改存在的记录:

sql 复制代码
UPDATE users SET email = 'alice.new@example.com' WHERE name = 'Alice';
步骤6:删除数据

使用 DELETE 命令删除记录:

sql 复制代码
DELETE FROM users WHERE name = 'Bob';

在 Python 中使用 SQLite

SQLite 可以通过 Python 标准库中的 sqlite3 模块进行无障碎離。

以下是一个简单的 Python 脚本,用于管理 SQLite 数据库:

python 复制代码
import sqlite3

# 连接到数据库(如果不存在则创建它)
connection = sqlite3.connect('my_database.db')
cursor = connection.cursor()

# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')

# 插入数据
cursor.execute('INSERT INTO users (name, email) VALUES (?, ?)', ('Alice', 'alice@example.com'))
connection.commit()

# 查询数据
cursor.execute('SELECT * FROM users')
for row in cursor.fetchall():
    print(row)

# 关闭连接
connection.close()

最佳实践
  1. 使用参数化查询:通过使用参数化查询,防止 SQL 注入攻击。
  2. 实现索引:对于验算频繁的列,通过实现索引以优化查询性能。
  3. 实时备份:SQLite 数据库存在于单个文件中,因此完整备份该文件构成应有之事。
  4. 在目标平台上测试:由于 SQLite 在不同平台上的为给有较小差异,需在目标环境上进行测试。

结论

SQLite 是一种极佳的选择,适合需要轻量级、可靠和易于使用的数据库解决方案。无论您是在构建移动应用、桌面应用,还是小规模的网络服务,SQLite 以其简单性和突出的紧凑性使它成为一个吸引人的选择。

在下一篇文章中,我们将深入探索 SQLite 的高级功能,如索引、触发器和全文检索。敬请期待!

相关推荐
HackTwoHub4 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
l1t5 小时前
DeepSeek总结的DuckLake构建基于 SQL 原生表格式的下一代数据湖仓
数据库·sql
KmSH8umpK5 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第八篇
数据库·redis·分布式
TDengine (老段)5 小时前
从施工监测到运营预警,桥科院用 TDengine 提升桥梁数据管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
S1998_1997111609•X6 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
KmSH8umpK7 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第七篇
数据库·redis·分布式
BU摆烂会噶8 小时前
【LangGraph】持久化实现的三大能力——时间旅行
数据库·人工智能·python·postgresql·langchain
l1t9 小时前
DeepSeek总结的DuckLake 入门
数据库
Joseph Cooper9 小时前
RAG 与 AI Agent:智能体真的需要检索增强生成吗?
数据库·人工智能·ai·agent·rag·上下文工程
light blue bird9 小时前
主子端台二分法任务汇总组件
前端·数据库·.net·桌面端winform