sqlite数据库
1. 简介
SQLite是一款轻量级的关系型数据库管理系统(RDBMS),常用于嵌入式设备和移动平台。
SQLite具有以下特点:
- 零配置:无需安装和配置即可使用。
- 独立性:所有数据都存储在一个单一的磁盘文件中。
- 轻量级:SQLite的库文件非常小,占用资源少。
- 事务支持:支持标准的SQL事务,包括ACID特性(原子性、一致性、隔离性和持久性)。
- 跨平台:适用于多种操作系统和编程语言。
2. 安装
SQLite的安装非常简单,只需下载对应操作系统的预编译二进制文件即可。
官方下载页面:https://www.sqlite.org/download.html
选择适合你的操作系统和使用的编程语言的预编译二进制文件进行下载。
3. 基本操作
3.1 连接数据库
在Python中,我们可以使用sqlite3
模块来连接SQLite数据库。
import sqlite3
# 连接到数据库文件(如果不存在,则会自动创建)
conn = sqlite3.connect('example.db')
3.2 创建表
要在SQLite数据库中创建表,我们需要执行相应的SQL语句。下面的示例演示了如何创建一个名为users
的表:
import sqlite3
# 连接到数据库文件(如果不存在,则会自动创建)
conn = sqlite3.connect('example.db')
# 创建users表的SQL语句
create_table_sql = '''CREATE TABLE users
(id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL);'''
# 执行SQL语句
conn.execute(create_table_sql)
# 关闭连接
conn.close()
3.3 插入数据
要向SQLite数据库中的表中插入数据,我们使用INSERT INTO
语句。以下是一个插入数据的示例:
import sqlite3
# 连接到数据库文件(如果不存在,则会自动创建)
conn = sqlite3.connect('example.db')
# 插入数据的SQL语句
insert_data_sql = '''INSERT INTO users (name, age)
VALUES (?, ?)'''
# 数据
data = [('Alice', 25),
('Bob', 30),
('Charlie', 35)]
# 执行SQL语句
conn.executemany(insert_data_sql, data)
# 提交事务
conn.commit()
# 关闭连接
conn.close()
3.4 查询数据
要从SQLite数据库中的表中查询数据,我们使用SELECT
语句。以下是一个查询数据的示例:
import sqlite3
# 连接到数据库文件(如果不存在,则会自动创建)
conn = sqlite3.connect('example.db')
# 查询数据的SQL语句
select_data_sql = '''SELECT * FROM users'''
# 执行SQL语句
cursor = conn.execute(select_data_sql)
# 遍历结果
for row in cursor:
print(f'ID: {row[0]}, Name: {row[1]}, Age: {row[2]}')
# 关闭连接
conn.close()
运行以上代码,将会输出以下结果:
ID: 1, Name: Alice, Age: 25
ID: 2, Name: Bob, Age: 30
ID: 3, Name: Charlie, Age: 35
3.5 更新数据
要更新SQLite数据库中的数据,我们使用UPDATE
语句。以下是一个更新数据的示例:
import sqlite3
# 连接到数据库文件(如果不存在,则会自动创建)
conn = sqlite3.connect('example.db')
# 更新数据的SQL语句
update_data_sql = '''UPDATE users SET age = ? WHERE name = ?'''
# 更新数据
data = (40, 'Bob')
conn.execute(update_data_sql, data)
# 提交事务
conn.commit()
# 关闭连接
conn.close()
3.6 删除数据
要从SQLite数据库中删除数据,我们使用DELETE FROM
语句。以下是一个删除数据的示例:
import sqlite3
# 连接到数据库文件(如果不存在,则会自动创建)
conn = sqlite3.connect('example.db')
# 删除数据的SQL语句
delete_data_sql = '''DELETE FROM users WHERE name = ?'''
# 删除数据
data = ('Alice',)
conn.execute(delete_data_sql, data)
# 提交事务
conn.commit()
# 关闭连接
conn.close()
4. 高级操作
4.1 使用事务
SQLite支持事务操作,可以确保一系列的数据库操作要么全部成功,要么全部失败。以下是一个使用事务的示例:
import sqlite3
# 连接到数据库文件(如果不存在,则会自动创建)
conn = sqlite3.connect('example.db')
# 创建事务
transaction = conn.begin()
try:
# 具体的数据库操作
conn.execute('''INSERT INTO users (name, age) VALUES ('David', 20)''')
conn.execute('''INSERT INTO users (name, age) VALUES ('Eva', 25)''')
# 提交事务
transaction.commit()
except:
# 回滚事务
transaction.rollback()
# 关闭连接
conn.close()
4.2 创建索引
索引可以提高数据库的查询效率。要在SQLite数据库中创建索引,我们使用CREATE INDEX
语句。以下是一个创建索引的示例:
import sqlite3
# 连接到数据库文件(如果不存在,则会自动创建)
conn = sqlite3.connect('example.db')
# 创建索引的SQL语句
create_index_sql = '''CREATE INDEX idx_name ON users (name)'''
# 执行SQL语句
conn.execute(create_index_sql)
# 关闭连接
conn.close()
4.3 使用约束
SQLite支持在表的列上添加约束,以保持数据的完整性和一致性。以下是一些常用的约束类型:
NOT NULL
:非空约束,确保列中的值不为空。UNIQUE
:唯一约束,确保指定的列中的值是唯一的。CHECK
:检查约束,用于定义列中值的范围或条件。PRIMARY KEY
:主键约束,用于唯一标识表中的每一行。
以下是一个使用约束的示例:
import sqlite3
# 连接到数据库文件(如果不存在,则会自动创建)
conn = sqlite3.connect('example.db')
# 创建带约束的表的SQL语句
create_table_with_constraint_sql = '''CREATE TABLE users
(id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
CHECK (age >= 18));'''
# 执行SQL语句
conn.execute(create_table_with_constraint_sql)
# 关闭连接
conn.close()
5. 备份和恢复
5.1 备份数据库
要备份SQLite数据库,我们只需将数据库文件复制到其他位置即可。
在Linux命令行中,可以使用以下命令进行备份:
$ cp example.db example_backup.db
在Windows命令提示符中,可以使用以下命令进行备份:
> copy example.db example_backup.db
5.2 恢复数据库
要恢复SQLite数据库,我们只需将备份的数据库文件复制回原始位置。
在Linux命令行中,可以使用以下命令进行恢复:
$ cp example_backup.db example.db
在Windows命令提示符中,可以使用以下命令进行恢复:
> copy example_backup.db example.db
6. 总结
本文介绍了SQLite数据库的基本操作,包括连接数据库、创建表、插入数据、查询数据、更新数据和删除数据。同时还介绍了一些高级操作,如使用事务、创建索引和使用约束。最后,还介绍了备份和恢复数据库的方法。
SQLite作为一款轻量级的数据库管理系统,具有简单易用、独立性和跨平台等优势。它在嵌入式设备和移动平台上得到广泛应用。