本备忘单旨在快速理解 SQLite 所涉及的主要概念,提供了最常用的SQL语句,供您参考。
SQLite 是一个轻量级的嵌入式关系数据库管理系统,遵循 ACID 原则,广泛用于浏览器、操作系统等应用中,实现本地数据存储。
sqlite-tools-win32-*.zip、sqlite-dll-win32-*.zipC:\sqlite,将这两个压缩文件解压到该文件夹下。sqlite3.def、 sqlite3.dll、 sqlite3.exelinux 自带 sqlite3,或者通过 apt-get/yum/brew 等安装。
brew install sqlite 安装
SQLite 通常无需复杂配置,当指定的数据库文件不存在时,它会自动创建一个新文件。
sqlite3 mydatabase.db
若数据库文件不存在则会自动创建
sqlite> .databases
main: /home/user/sqlite/database.db r/w
sqlite> .backup back
sqlite> .show 
        echo: off
         eqp: off
     explain: auto
     headers: off
        mode: list
   nullvalue: ""
      output: stdout
colseparator: "|"
rowseparator: "\n"
       stats: off
       width:
    filename: api.db
sqlite> .dump user
sqlite> .exit
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE api (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    host TEXT NOT NULL,
    port INTEGER NOT NULL,
    path TEXT NOT NULL
);
INSERT INTO api VALUES(1,'example.com',8080,'/api/v1');
sqlite3 mydatabase.db .dump > backup.sql
sqlite3 mydatabase.db < backup.sql
sqlite> .mode csv
sqlite> select * from api;
id,host,port,path
1,example.com,8080,/api/v1
sqlite> select * from api;
| id |      host       | port |  path   |
|----|-----------------|------|---------|
| 1  | example.com     | 8080 | /api/v1 |
支持 ascii box column csv html insert json line list markdown qbox quote table tabs tcl 等类型
sqlite> create table user(id integer primary key, name text);
sqlite> .tables
sqlite> .schema user
sqlite> .import user.csv user
sqlite> .head on
-- 创建表
create table user(id integer primary key, name text);
-- 删除表
drop table user;
-- 重命名表
alter table user rename to user_new;
-- 插入
-- 单条
insert into user(name) values('test');
-- 多条
insert into user(name) values('test1'),('test2');
-- 查询
select * from user;
-- 去重查询
select distinct name from user;
-- 统计
select count(id) from user;
-- limit
select * from user limit 2;
-- 条件查询
select * from user where id > 1;
-- 模糊查询
select * from user where name like '%test%';
-- group by
select name, count(id) from user group by name;
-- 排序
select * from user order by id desc;
-- 聚合函数
select max(id) from user;
-- 更新
update user set name='test3' where id=1;
-- 删除
delete from user where id=1;
事务具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)四个标准属性,缩写为 ACID。
-- 开始事务
begin transaction;
-- 操作
update user set name='test4' where id=1;
-- 回滚
rollback;
-- 提交
commit;
| 命令 | 描述 | 
|---|---|
| .backup ?DB? FILE | 备份 DB 数据库(默认是 "main")到 FILE 文件。 | 
| .bail ON|OFF | 发生错误后停止。默认为 OFF。 | 
| .databases | 列出数据库的名称及其所依附的文件。 | 
| .dump ?TABLE? | 以 SQL 文本格式转储数据库。如果指定了 TABLE 表,则只转储匹配 LIKE 模式的 TABLE 表。 | 
| .echo ON|OFF | 开启或关闭 echo 命令。 | 
| .exit | 退出 SQLite 提示符。 | 
| .explain ON|OFF | 开启或关闭适合于 EXPLAIN 的输出模式。如果没有带参数,则为 EXPLAIN on,即开启 EXPLAIN。 | 
| .header(s) ON|OFF | 开启或关闭头部显示。 | 
| .help | 显示消息。 | 
| .import FILE TABLE | 导入来自 FILE 文件的数据到 TABLE 表中。 | 
| .indices ?TABLE? | 显示所有索引的名称。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表的索引。 | 
| .load FILE ?ENTRY? | 加载一个扩展库。 | 
| .log FILE|off | 开启或关闭日志。FILE 文件可以是 stderr(标准错误)/stdout(标准输出)。 | 
| .nullvalue STRING | 在 NULL 值的地方输出 STRING 字符串。 | 
| .output FILENAME | 发送输出到 FILENAME 文件。 | 
| .output stdout | 发送输出到屏幕。 | 
| .print STRING... | 逐字地输出 STRING 字符串。 | 
| .prompt MAIN CONTINUE | 替换标准提示符。 | 
| .quit | 退出 SQLite 提示符。 | 
| .read FILENAME | 执行 FILENAME 文件中的 SQL。 | 
| .schema ?TABLE? | 显示 CREATE 语句。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表。 | 
| .separator STRING | 改变输出模式和 .import 所使用的分隔符。 | 
| .show | 显示各种设置的当前值。 | 
| .stats ON|OFF | 开启或关闭统计。 | 
| .tables ?PATTERN? | 列出匹配 LIKE 模式的表的名称。 | 
| .timeout MS | 尝试打开锁定的表 MS 毫秒。 | 
| .width NUM | NUM 为 "column" 模式设置列宽度。 | 
| .timer ON|OFF | 开启或关闭 CPU 定时器。 | 
| .mode MODE | 设置输出模式,MODE 可以是下列之一 :csv逗号分隔的值column 左对齐的列 html HTML 的 <table> 代码 insert TABLE 表的 SQL 插入(insert)语句 line 每行一个值 list 由 .separator 字符串分隔的值 tabs 由 Tab 分隔的值 tcl TCL 列表元素 | 
在命令行中通过 .help 命令显示帮助文档