SQLite 是一个轻量级的、嵌入式的数据库引擎,它将整个数据库存储在一个单一的文件中,因此特别适用于小型应用、桌面应用和移动应用。它不需要服务器支持,并且支持 SQL 标准的大部分功能。以下是 SQLite 的基本教程,帮助你快速了解 SQLite 的使用方法。
目录
- SQLite 安装与配置
- SQLite 安装
- 使用 SQLite 数据库
- SQLite 命令行工具
- 创建数据库与表
- 创建数据库
- 创建表
- 设置主键与唯一约束
- 基本 SQL 操作
INSERT
插入数据SELECT
查询数据UPDATE
更新数据DELETE
删除数据
- 高级操作
- 联接表(JOIN)
- 聚合函数(COUNT, SUM, AVG 等)
- 子查询
- 索引与性能优化
- 创建索引
- 删除索引
- 查询性能优化
- 事务与并发控制
- 使用事务
- 锁与并发控制
- SQLite 与编程语言集成
- Python 使用 SQLite
- PHP 使用 SQLite
- Java 使用 SQLite
- 参考资料与外部链接
1. SQLite 安装与配置
SQLite 安装
SQLite 作为一个轻量级数据库,并不需要像 MySQL 或 PostgreSQL 那样进行复杂的安装。通常,你只需要下载 SQLite 的命令行工具,或者使用语言自带的 SQLite 库。
- Linux:你可以通过包管理器安装 SQLite,例如:
sudo apt-get install sqlite3 sudo apt-get install libsqlite3-dev
- Windows 和 macOS:直接从 SQLite 官方网站 下载适合的版本。
使用 SQLite 数据库
安装完 SQLite 后,可以使用 sqlite3
命令行工具进行操作:
sqlite3 my_database.db
这会打开 my_database.db
数据库文件,如果文件不存在,SQLite 会创建它。
2. 创建数据库与表
创建数据库
SQLite 会在文件系统上创建一个文件来存储数据库。如果文件不存在,SQLite 会自动创建它。例如:
sqlite3 my_database.db
创建表
使用 SQL 语句来创建表。例如,创建一个 users
表:
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
email TEXT NOT NULL UNIQUE,
age INTEGER
);
此语句会创建一个 users
表,包含 id
、username
、email
和 age
四个字段。id
字段设置为自增主键。
设置主键与唯一约束
- 主键(PRIMARY KEY)确保字段值唯一,并且自动为其创建索引。
- 唯一(UNIQUE)约束确保列的每个值都是唯一的。
CREATE TABLE products (
product_id INTEGER PRIMARY KEY,
product_name TEXT NOT NULL UNIQUE,
price REAL
);
3. 基本 SQL 操作
插入数据(INSERT
)
插入一行数据:
INSERT INTO users (username, email, age)
VALUES ('john_doe', 'john@example.com', 30);
查询数据(SELECT
)
查询所有用户:
SELECT * FROM users;
查询特定用户:
SELECT * FROM users WHERE username = 'john_doe';
更新数据(UPDATE
)
更新用户信息:
UPDATE users
SET age = 31
WHERE username = 'john_doe';
删除数据(DELETE
)
删除用户:
DELETE FROM users WHERE username = 'john_doe';
4. 高级操作
联接表(JOIN
)
联接多个表可以通过 JOIN
实现。例如,查询用户和订单的信息:
SELECT users.username, orders.order_date
FROM users
JOIN orders ON users.id = orders.user_id;
聚合函数
SQLite 支持常见的聚合函数,如 COUNT
、SUM
、AVG
等。例如,查询用户数量:
SELECT COUNT(*) FROM users;
子查询
子查询可以嵌套在其他查询中:
SELECT username
FROM users
WHERE age > (SELECT AVG(age) FROM users);
5. 索引与性能优化
创建索引
创建索引可以加速查询操作,尤其是对于大数据量的表。示例如下:
CREATE INDEX idx_users_username ON users(username);
删除索引
如果不再需要索引,可以删除它:
DROP INDEX idx_users_username;
查询性能优化
- 确保常用查询的字段上创建索引。
- 使用
EXPLAIN QUERY PLAN
来分析查询性能。
EXPLAIN QUERY PLAN SELECT * FROM users WHERE username = 'john_doe';
6. 事务与并发控制
使用事务
事务用于确保一组操作的原子性。示例如下:
BEGIN TRANSACTION;
INSERT INTO users (username, email, age)
VALUES ('new_user', 'new_user@example.com', 25);
UPDATE users SET age = 26 WHERE username = 'new_user';
COMMIT;
锁与并发控制
SQLite 是一个单进程数据库,但它也支持基本的并发控制。对于复杂的并发需求,考虑使用更强大的数据库系统。
7. SQLite 与编程语言集成
Python 使用 SQLite
Python 的 sqlite3
库可以轻松与 SQLite 集成:
import sqlite3
# 连接到 SQLite 数据库
conn = sqlite3.connect('my_database.db')
# 创建一个 cursor 对象
cursor = conn.cursor()
# 执行 SQL 查询
cursor.execute("SELECT * FROM users")
# 获取所有结果
rows = cursor.fetchall()
for row in rows:
print(row)
# 关闭连接
conn.close()
PHP 使用 SQLite
PHP 也支持 SQLite,通常使用 PDO 扩展:
<?php
try {
$pdo = new PDO('sqlite:my_database.db');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 执行查询
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['username'] . "\n";
}
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Java 使用 SQLite
Java 可以通过 JDBC 和 SQLite 进行集成,使用 sqlite-jdbc
库:
import java.sql.*;
public class SQLiteExample {
public static void main(String[] args) {
try (Connection conn = DriverManager.getConnection("jdbc:sqlite:my_database.db")) {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
System.out.println(rs.getString("username"));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
8. 参考资料与外部链接
这个教程概述了 SQLite 的基本操作。如果你有更具体的问题或需要详细的示例,随时可以问!
发表回复