本章我们介绍sqlite3
命令行工具。
sqlite3 工具
sqlite3
工具是 SQLite 库的基于终端的前端,可以交互地评估查询并以多种格式显示结果。 它也可以在脚本中使用。
在终端屏幕上,我们看到sqlite3
工具的以下提示:
.help
命令是sqlite3
工具的元命令之一; 它列出了所有元命令。 .exit
和.quit
命令退出sqlite3
会话。 我们还可以使用Ctrl + D
组合键退出sqlite3
。 .databases
命令显示附加的数据库。 .tables
命令列出了可用的表。
Ctrl + L
清除屏幕,Ctrl + U
清除当前行。 (使用 readline 库构建时。)
使用 sqlite3 创建数据库
完整的 SQLite 数据库存储在单个跨平台磁盘文件中。 我们使用sqlite3
命令行工具创建一个新的数据库文件。
在这里,我们创建一个新的test.db
数据库。 如果该文件存在,则将其打开。
基本的 sqlite3 元命令
接下来,我们描述sqlite3
工具的一些元命令。
.tables
命令显示可用表。
在这里,我们得到SELECT
语句的输出。 默认情况下,输出模式为line
,分隔符为|
。
在这里,我们使用了一个新的冒号分隔符。
还有其他几种输出模式可用。 以下示例显示column
输出模式。
本示例说明如何在 sqlite 的列模式下格式化数据。 .headers
命令也已用于显示列标题。 默认情况下,标题是隐藏的。
.width
命令调整列的大小。 (此 meta 命令仅与列模式下的表有关。)
列宽不足以正确显示所有数据。
在这里,我们更改列宽。 第一列为 15 个字符,第二列为 18 个字符。
.shell
命令执行系统程序。 在本例中,我们使用clear
命令清除屏幕。 (Windows 上的等效值为cls
。)
.show
命令列出了各种设置。 其中包括输出模式,列表模式中使用的分隔符以及标题是否打开。
.schema
命令显示表的结构。 它提供了 DDL SQL 来创建表。
可以使用.prompt
命令更改sqlite3
的提示。
有两个提示。 一个是主提示,另一个是继续提示。 默认的主提示是sqlite>
,默认的继续提示是...>
。
从 Shell 执行 SQL
我们可以从 Shell 执行 SQL 命令。
在这里,我们非交互地执行了SELECT
语句; 从Cars
表中选择了所有汽车。
转储表
可以将 SQL 格式的表转储到磁盘上。 这样,我们可以轻松地保存数据库表的结构和数据。
我们有汽车表。
我们将使用.dump
命令转储该表。
.dump
命令向我们显示了创建Cars
表所需的 SQL。
我们还可以将输出重定向到文件。 .output
命令会将输出重定向到cars2.sql
文件。
我们使用cat
命令显示cars2.sql
文件的内容。
读取 SQL
我们可以使用.read
命令从文件名读取 SQL 语句。
在这里,我们执行了一系列命令。 我们放下表并从cars.sql
中读取它。
.sqlite_history
文件
命令和语句存储在.sqlite_history
文件中。 该文件位于主目录中。
使用tail
命令,显示最后五个条目。
资源文件
sqlite3
工具具有一个名为.sqliterc
的资源文件。 它位于主目录中。 如果没有这样的文件,我们可以简单地创建它。 资源文件可以包含元命令或常规 SQL 语句。 但是,我们应该避免在文件中使用 SQL。
这是资源文件的简单示例。 它具有三个 meta 命令。 使用资源文件,当我们启动sqlite3
工具时,我们不必重新执行 meta 命令。 它们将在工具启动时自动执行。
我们有一条消息说该工具从一开始就加载资源。
命令行选项
该工具有几个命令行选项。 他们大多复制 meta 命令。 请注意,命令行选项将覆盖资源文件元命令。
--help
选项为我们提供了所有可用选项的列表,并带有简要说明。
我们使用-echo
,-line
和-noheader
选项启动sqlite3
工具。 SELECT
语句在启动后会重复/回显。 输出处于行模式,并且没有标题显示。
使用-version
选项,我们得到 sqlite3 的版本。
使用-html
选项,我们可以将结果输出为简单的 HTML 表。