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 的高级功能,如索引、触发器和全文检索。敬请期待!

相关推荐
编程修仙11 分钟前
c3p0连接池
数据库·oracle
补三补四33 分钟前
Django与视图
数据库·python·django·sqlite
程序员总部1 小时前
如何应对Maven中的依赖导入挑战?
数据库·sql·maven
赵渝强老师2 小时前
【赵渝强老师】管理MongoDB的运行
数据库·mongodb
A仔不会笑3 小时前
MySQL面试篇——性能优化
java·数据库·mysql·面试·性能优化
梦幻编织者3 小时前
python使用django搭建图书管理系统
数据库·python·django
考虑考虑3 小时前
MySQL中的DATE_FORMAT时间函数
数据库·后端·mysql
SelectDB技术团队3 小时前
云原生时代的架构革新,Apache Doris 存算分离如何实现弹性与性能双重提升
大数据·数据库·云原生·doris·存算分离
星迹日4 小时前
MySQL : 数据库和表操作
数据库·mysql·数据类型··
2302_799525744 小时前
【Hadoop】如何理解MapReduce?
数据库·hadoop·mapreduce