SQLite 提供了一个名为 sqlite3 的简单命令行实用程序,它允许用户针对 SQLite 数据库手动执行 SQL 语句。本章简要介绍 sqlite3 点(.)命令。

  • 点命令必须以"."开头。位于左边距,前面没有空格。
  • 点命令必须完全包含在单个输入行中。
  • 点命令不能出现在普通 SQL 的中间陈述。换句话说,点命令不能出现在继续提示符处。
  • 点命令无法识别注释。

所有可用的点(.)命令都是下面列出:

序号命令和说明
1..archive ...
管理 SQL 归档
2..auth ON|OFF
显示授权者回调
3..backup?DB? FILE
将数据库(默认"main")备份到FILE
4..bail on|off
遇到错误后停止。默认关闭
5..binary on|off
打开或关闭二进制输出。默认 OFF
6..cd DIRECTORY
将工作目录更改为 DIRECTORY
7..changes on|off
显示 SQL 更改的行数
8..check GLOB
如果自 .testcase 以来的输出不匹配,则失败
9..clone NEWDB
将现有数据库中的数据克隆到NEWDB中
10..connection [close] [#]
打开或关闭辅助数据库连接
11..databases
列出附加数据库的名称和文件
12. .dbconfig?op? ?val?
列出或更改 sqlite3_db_config() 选项
13..dbinfo ?DB?
显示有关数据库的状态信息
14..dump ?OBJECTS?
将数据库内容渲染为 SQL
15..echo on|off
打开或关闭命令回显
16..eqp on|off|full|...
启用或禁用自动 EXPLAIN QUERY PLAN
17..excel
显示以下输出电子表格中的下一个命令
18..exit ?CODE?
退出此程序并返回代码 CODE
19..expert
实验性的。建议查询索引
20。.explain ?on|off|auto?
更改 EXPLAIN格式化模式。默认值:auto
21..filectrl CMD ...
运行各种 sqlite3_file_control() 操作
22..fullschema ?--indent?
显示 schema 和 sqlite_stat 表的内容
23..headers on|off
打开或关闭标题显示
24..help ?-all? ?PATTERN?
显示 PATTERN 的帮助文本
25..import FILE TABLE
将数据从 FILE 导入到 TABLE
26..imposter INDEX TABLE
创建 imposter索引 INDEX 上的表 TABLE
27..indexes ?TABLE?
显示索引名称
28。.limit?LIMIT? ?VAL?
显示或更改 SQLITE_LIMIT 的值
29..lint OPTIONS
报告潜在的架构问题。
30..load FILE ?ENTRY?
加载扩展库
31..log FILE|off
打开或关闭日志记录。文件可以是 stderr/stdout
32..mode MODE ?TABLE?
设置输出模式,其中 MODE 为以下之一:
  • csv - 逗号分隔值
  • column - 左对齐列。
  • html - HTML <table> 代码
  • insert - TABLE 的 SQL 插入语句
  • line - 每行一个值
  • list - 由以下分隔的值.separator string
  • tabs - 制表符分隔值
  • tcl - TCL 列表元素
33..nonce STRING
如果随机数匹配,则禁用一个命令的安全模式
34..nullvalue STRING
使用 STRING 代替 NULL 值
35.once?OPTIONS? ?FILE?
下一个 SQL 命令的输出仅到 FILE
36..open ?OPTIONS ? ?FILE?
关闭现有数据库并重新打开 FILE
37..output ?FILE?
如果省略 FILE,则将输出发送到 FILE 或 stdout
38..parameter CMD ...
管理 SQL 参数绑定
39..print STRING...
打印文字 STRING
40..progress N
每 N 个操作码后调用进度处理程序
41..prompt MAIN CONTINUE
替换标准提示
42..quit
退出此程序
43..read FILE
从 FILE 读取输入
44..recover
从损坏的数据库中恢复尽可能多的数据。
45。.restore?DB? FILE
从FILE恢复数据库内容(默认"main")
46..save FILE
将内存数据库写入FILE
47..scanstats on|off
打开或关闭 sqlite3_stmt_scanstatus() 指标
48..schema ?PATTERN?
显示与 PATTERN 匹配的 CREATE 语句
49..selftest ?OPTIONS?
运行中定义的测试SELFTEST 表
50。.separator COL ?ROW?
更改列和行分隔符
51..session?NAME? CMD ...
创建或控制会话
52..sha3sum ...
计算数据库内容的 SHA3 哈希
53。.shell CMD ARGS...
在系统 shell 中运行 CMD ARGS...
54..show
显示各种设置的当前值
55。.stats ?ARG?
显示统计数据或回合统计数据打开或关闭
56。.system CMD ARGS...
运行 CMD ARGS...在系统 shell
57..tables ?TABLE?
列出与 LIKE 模式 TABLE 匹配的表名称
58..testcase NAME
开始将输出重定向到"testcase-out.txt"
59..testctrl CMD ...
运行各种sqlite3_test_control()操作
60..timeout MS
尝试打开锁定MS 毫秒表
61..timer on|off
打开或关闭 SQL 计时器
62..trace?OPTIONS?
在运行时输出每个 SQL 语句
63..vfsinfo ?AUX?
顶级VFS信息
64..vfslist
列出所有可用的 VFS
65..vfsname ?AUX?
打印 VFS 堆栈的名称
66..width NUM1 NUM2 ...
设置列式输出的最小列宽

格式化输出

以下点命令序列可用于格式化输出:

sqlite> .header on
sqlite> .mode column
sqlite> .timer on
sqlite> 

上述设置将在

EmpID     Name        City         Age         Salary
--------  ----------  -----------  ----------  ----------
1         John        London       25          3000.0
2         Marry       New York     24          2750.0
3         Jo          Paris        27          2800.0
4         Kim         Amsterdam    30          3100.0
5         Ramesh      New Delhi    28          3000.0
6         Huang       Beijing      28          2800.0
CPU Time: user 0.000000 sys 0.000000 

sqlite_master 表

master 表保存有关数据库表的关键信息,称为 sqlite_master。可以使用以下点命令查看其架构:

sqlite> .schema sqlite_master 

这将产生类似于以下内容的结果:

CREATE TABLE sqlite_master (
   type text,
   name text,
   tbl_name text,
   rootpage integer,
   sql text
);