核心特点:零配置、单文件存储、跨平台、轻量嵌入式数据库,兼容标准 SQL。
一、核心数据类型(动态类型系统)
-
INTEGER:整数(支持自增主键、布尔值,TRUE=1/ FALSE=0)
-
TEXT:文本字符串(UTF-8/UTF-16/UTF-32 编码,含中文、日期字符串)
-
REAL:浮点数(双精度,存储小数、金额等)
-
BLOB:二进制数据(图片、文件等,原样存储)
-
NUMERIC:自动适配类型(日期、数值等,自动转换格式)
-
日期存储推荐:
TEXT('2025-01-01 12:00:00')或INTEGER(时间戳)
二、常用 SQL 命令(核心操作)
1. 数据库连接(命令行)
sqlite3 test.db # 创建/连接 test.db 数据库文件
2. 表操作(DDL)
-
创建表:
CREATE TABLE [IF NOT EXISTS] 表名 (列名 类型 [约束], ...);CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, -- 自增主键 name TEXT NOT NULL, age INTEGER CHECK(age>0), email TEXT UNIQUE ); -
查看表结构:
PRAGMA table_info(表名); -
列出所有表:
.tables(命令行辅助命令) -
修改表:
ALTER TABLE 表名 ADD COLUMN 列名 类型;(仅支持添加列) -
删除表:
DROP TABLE [IF EXISTS] 表名;
3. 数据操作(DML)
-
插入数据:
INSERT INTO 表名 (列1,列2) VALUES (值1,值2);INSERT INTO users (name, age) VALUES ('Alice', 25), ('Bob', 30); -
查询数据:
SELECT 列 FROM 表名 [WHERE 条件] [ORDER BY 列] [LIMIT 数量];SELECT name, age FROM users WHERE age>20 ORDER BY age DESC LIMIT 10; -
更新数据:
UPDATE 表名 SET 列1=值1 WHERE 条件;UPDATE users SET age=26 WHERE name='Alice'; -
删除数据:
DELETE FROM 表名 [WHERE 条件];DELETE FROM users WHERE name='Bob';
4. 索引与事务
-
创建索引:
CREATE [UNIQUE] INDEX 索引名 ON 表名(列名);(加速查询) -
删除索引:
DROP INDEX [IF EXISTS] 索引名; -
事务操作:
BEGIN TRANSACTION; -- 开始事务 -- 插入/更新/删除操作 COMMIT; -- 提交(永久生效)/ ROLLBACK; -- 回滚(取消操作)
5. 特殊配置(PRAGMA)
-
开启外键支持:
PRAGMA foreign_keys = ON;(默认关闭) -
查看建表语句:
.schema 表名(命令行)
三、命令行辅助命令(.xxx 格式)
-
.open 文件名:切换数据库文件 -
.header on:显示查询结果列名 -
.mode column:列对齐格式化显示结果 -
.output 文件名:将查询结果导出到文件 -
.read 脚本.sql:执行 SQL 脚本文件 -
.help:查看所有辅助命令 -
.exit/.quit:退出命令行
四、常用场景示例
1. 基础查询(分页 + 过滤)
-- 第2页(每页5条):跳过前5条,取5条
SELECT * FROM users WHERE age BETWEEN 18 AND 35 LIMIT 5 OFFSET 5;
2. 关联查询(两表 JOIN)
-- 订单表关联用户表,查询用户订单
SELECT u.name, o.amount FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
3. 聚合统计
-- 按性别分组,统计人数和平均年龄
SELECT gender, COUNT(*) 人数, AVG(age) 平均年龄 FROM users GROUP BY gender;
4. 空值处理
-- 替换空邮箱为默认值
SELECT name, COALESCE(email, 'no-email@test.com') FROM users;
要不要我帮你生成一份可直接复制的 SQL 脚本文件 ,包含上述所有示例命令,下载后可直接通过 .read 命令执行,快速上手实操?
SQLite 创建 / 连接数据库命令
在 SQLite 中,创建数据库和连接数据库的操作是一体的------ 因为 SQLite 数据库以单一文件形式存在,连接一个不存在的文件时,会自动创建该数据库文件。以下是具体命令和用法:
一、核心命令(通过 sqlite3 工具)
1. 创建并连接新数据库
sqlite3 数据库文件名.db
-
若
数据库文件名.db不存在,会在当前目录创建该文件(即新数据库),并自动连接。 -
若文件已存在,则直接连接该数据库。
示例 :创建并连接 mydb.db 数据库:
sqlite3 mydb.db
执行后进入 SQLite 交互模式(提示符为 sqlite>),此时可执行 SQL 命令(如建表、插入数据等)。
2. 连接已有数据库
与创建命令完全相同,直接指定已有数据库文件即可:
sqlite3 /path/to/existing.db # 可指定绝对路径或相对路径
示例 :连接当前目录下的 data.db:
sqlite3 data.db
连接其他目录的数据库(如 /home/user/docs/notes.db):
sqlite3 /home/user/docs/notes.db
3. 在交互模式中切换数据库
进入 SQLite 交互模式后,可通过 .open 命令切换到其他数据库:
.open 新数据库名.db # 切换并连接(不存在则创建)
示例 :从当前数据库切换到 newdb.db:
sqlite> .open newdb.db # 若newdb.db不存在,会自动创建
二、退出数据库连接
在交互模式中,通过以下命令退出连接:
.quit # 或 .exit
三、关键说明
-
无服务器依赖:SQLite 无需启动数据库服务,直接通过文件操作,因此 "连接" 本质是打开文件。
-
文件权限:创建数据库时,当前用户需有目录的写入权限,否则会创建失败。
-
跨平台兼容 :创建的
.db文件可在 Windows、Linux、macOS 等系统间直接复制使用,无需格式转换。
总结
| 操作 | 命令 | 示例 |
|---|---|---|
| 创建并连接新数据库 | sqlite3 文件名.db |
sqlite3 mydata.db |
| 连接已有数据库 | sqlite3 已有文件名.db |
sqlite3 /opt/data/old.db |
| 交互模式中切换数据库 | .open 目标文件名.db |
sqlite> .open another.db |
| 退出连接 | .quit 或 .exit |
sqlite> .exit |
通过以上命令,可快速完成 SQLite 数据库的创建、连接和切换操作。