SQLite 命令


本章将向您讲解 SQLite 编程人员所使用的简单却有用的命令。这些命令被称为 SQLite 的点命令,这些命令的不同之处在于它们不以分号 ; 结束。

让我们在命令提示符下键入一个简单的 sqlite3 命令,在 SQLite 命令提示符下,您可以使用各种 SQLite 命令。

$ sqlite3
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> 

如需获取可用的点命令的清单,可以在任何时候输入 ".help"。例如:

sqlite>.help

上面的命令会显示各种重要的 SQLite 点命令的列表,如下所示:

命令 描述
.archive ... 管理SQL存档.
.auth ON|OFF 显示授权者回调.
.backup ?DB? FILE 备份 DB 数据库(默认是 "main")到 FILE 文件。
.bail ON|OFF 发生错误后停止。默认为 OFF。
.binary on|off 打开或关闭二进制输出。默认关闭。
.cd DIRECTORY 将工作目录更改为 DIRECTORY。
.changes on|off 显示由SQL更改的行数。
.check GLOB 如果输出自.testcase不匹配,则失败。
.clone NEWDB 将数据从现有数据库克隆到NEWDB。
.databases 列出数据库的名称及其所依附的文件。
.dbconfig ?op? ?val? 列出或更改sqlite3_db_config()选项。
.dbinfo ?DB? 显示数据库的状态信息。
.dump ?TABLE? 以 SQL 文本格式转储数据库。如果指定了 TABLE 表,则只转储匹配 LIKE 模式的 TABLE 表。
.echo ON|OFF 开启或关闭 echo 命令。
.eqp on|off|full|... 启动或禁用或自动 EXPLAIN QUERY PLAN。
.excel 在电子表格中显示下一个命令的输出。
.exit ?CODE? 使用返回代码退出此程序。
.expert EXPERIMENTAL. 建议查询索引。
explain ?on|off|auto? 开启或关闭适合于 EXPLAIN 的输出模式。如果没有带参数,则为 EXPLAIN on,即开启 EXPLAIN。
.filectrl CMD ... 运行各种sqlite3_file_control()操作。
.fullschema ?--indent? 显示模式和sqlite_stat表的内容。
.header(s) ON|OFF 开启或关闭头部显示。
.help ?-all? ?PATTERN? 显示消息(PATTERN)。
.import FILE TABLE 导入来自 FILE 文件的数据到 TABLE 表中。
.imposter INDEX TABLE 在索引索引上创建imposter表。
.indices ?TABLE? 显示所有索引的名称。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表的索引。
.limit ?LIMIT? ?VAL? 显示或更改SQLITE_LIMIT的值。
.lint OPTIONS 报告潜在的架构问题。
.load FILE ?ENTRY? 加载一个扩展库。
.log FILE|off 开启或关闭日志。FILE 文件可以是 stderr(标准错误)/stdout(标准输出)。
.mode MODE ?TABLE? 设置输出模式,MODE 可以是下列之一:
  • csv 逗号分隔的值

  • column 左对齐的列

  • html HTML 的 <table> 代码

  • insert TABLE 表的 SQL 插入(insert)语句

  • line 每行一个值

  • list 由 .separator 字符串分隔的值

  • tabs 由 Tab 分隔的值

  • tcl TCL 列表元素

.nullvalue STRING 在 NULL 值的地方输出 STRING 字符串。
.once (-e|-x|FILE) 下一个SQL命令只输出到文件。
.open ?OPTIONS? ?FILE? 关闭现有数据库并重新打开文件。
.output ?FILE? 如果文件被省略,则将输出发送到文件或stdout。
.parameter CMD ... 管理SQL参数绑定。
.print STRING... 逐字地输出 STRING 字符串。
.progress N 每N个操作码后调用进度处理程序。
.prompt MAIN CONTINUE 替换标准提示符。
.quit 退出 SQLite 提示符。
.read FILE 执行 FILE 文件中的 SQL。
.recover 从损坏的数据库中恢复尽可能多的数据。
.restore ?DB? FILE 从文件还原数据库(默认为“main”)的内容。
.save FILE 将内存数据库写入文件。
.scanstats on|off 打开或关闭sqlite3_stmt_scanstatus()度量。
.schema ?PATTERN? 显示 CREATE 语句。如果指定了 TABLE 表,则只显示匹配 LIKE 模式的 TABLE 表。
.selftest ?OPTIONS? 运行SELFTEST表中定义的测试。
.separator COL ?ROW? 更改列和行分隔符。
.sha3sum ... 计算数据库内容的SHA3散列。
.shell CMD ARGS... Run CMD ARGS... in a system shell。
.show 显示各种设置的当前值。
.stats ON|OFF 开启或关闭统计。
.system CMD ARGS... Run CMD ARGS... in a system shell。
.tables ?PATTERN? 列出匹配 LIKE 模式的表的名称。
.testcase NAME 开始将输出重定向到“testcase out.txt”。
.testctrl CMD ... 运行各种sqlite3_test_control()操作。
.timeout MS 尝试打开锁定的表 MS 毫秒。
.timer ON|OFF 开启或关闭 CPU 定时器。
.trace ?OPTIONS? 在运行时输出每个SQL语句。
.vfsinfo ?AUX? 关于top-level VFS。
.vfslist 列出所有可用的VFS。
.vfsname ?AUX? 打印VFS堆栈的名称。
.width NUM1 NUM2 ... 为 "column" 模式设置列宽度。

让我们尝试使用 .show 命令,来查看 SQLite 命令提示符的默认设置。

sqlite> .show
        echo: off
         eqp: off
     explain: auto
     headers: off
        mode: list
   nullvalue: ""
      output: stdout
colseparator: "|"
rowseparator: "\n"
       stats: off
       width: 
    filename: FILENAME
sqlite> 
确保 sqlite> 提示符与点命令之间没有空格,否则将无法正常工作。

格式化输出

您可以使用下列的点命令来格式化输出为本教程下面所列出的格式:

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

上面设置将产生如下格式的输出:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0
CPU Time: user 0.000000 sys 0.000000

sqlite_master 表格

主表中保存数据库表的关键信息,并把它命名为 sqlite_master。如要查看表概要,可按如下操作:

sqlite>.schema sqlite_master

这将产生如下结果:

CREATE TABLE sqlite_master (
  type text,
  name text,
  tbl_name text,
  rootpage integer,
  sql text
);
本教程仅供参考学习,如用于商业带来的问题,本站概不负责。
关注公众号
关注公众号

©2020 IT自习室京ICP备20010815号