如何在 Linux 上使用 DB Browser for SQLite

SQLite 数据库浏览器可让您在 Linux 上查看和编辑 SQLite 数据库。您可以设计、创建和编辑这些数据库文件,并查看其他应用程序的内部工作原理。以下是如何使用此 SQLite GUI。
SQLite 数据库项目
SQLite 数据库库和工具是一个非常成功的开源结构化查询语言 (SQL) 数据库项目。如此成功,事实上,它可以称自己为世界上部署最广泛的数据库引擎。
自 2000 年首次发布以来,SQLite 的使用量绝对惊人。它存在于每一部 iPhone 和 Android 手机,以及 Windows 10 或 Mac 电脑中。它也存在于每个互联网浏览器中,包括 Chrome、Firefox 和 Safari,以及无数其他应用程序。
SQLite 数据库令人难以置信的影响力归功于它的架构。它是一个快速、轻量级的库,已合并(或者用开发人员的话来说,链接)到其他应用程序中。数据库引擎成为产品不可或缺的一部分。这意味着您不必提供外部 SQL 数据库服务器,如 MySQL、MariaDB 或 Microsoft SQL Server。
SQLite 也有一个用于操作数据库的命令行工具,但它是使它取得成功的库。在您的应用程序中隐藏一个功能强大、独立的数据库引擎可以消除很多问题。它简化了应用程序的安装程序并降低了应用程序的最低硬件要求。
此外,由于 SQLite 为其数据库表、索引和模式使用单个跨平台文件,因此可以将整个数据库移动到另一台计算机。您甚至可以通过复制一个文件将其移动到运行不同操作系统的机器上。
事实上,SQLite 的数据库文件格式备受推崇,它是国会图书馆推荐的用于长期数据存储的少数格式之一。
由于 SQLite 是开发人员的库,因此没有前端,这意味着它没有图形用户界面。它是使用提供用户界面的库的应用程序。命令行实用程序可以以交互模式运行,但它仍然不是 GUI。
DB Browser for SQLite (DB4S) 非常适合这个要求。它是由另一个开源项目开发的可视化工具,允许从 GUI 中创建和操作 SQLite 数据库。
SQLite 数据库浏览器
SQLite 的数据库浏览器自 2003 年以来一直存在(以一种或另一种形式),并且经历了几次名称更改。以前,它被称为 SQLite 浏览器,但这引起了混淆。人们认为它是由 SQLite 团队编写的,因此将有关 DB4S 的功能请求和支持查询转发给 SQLite。
因此,SQLite Browser 更名为 DB Browser for SQLite。您仍然会在这里和那里看到对旧名称的引用。事实上,该项目的网站仍然使用“sqlitebrowser”作为其域,并且在安装 DB4S 时也使用旧名称。
使用 DB4S,您可以:
- 创建数据库。
- 以 SQL 格式导入和导出数据库架构、表格和数据。
- 以 CSV 格式导入和导出表格和数据。
- 创建、编辑和删除表和索引。
- 添加、编辑和删除记录。
- 浏览和搜索数据库记录。
- 编辑和运行 SQL 命令。在将一些 SQL 硬编码到您的应用程序之前,您可以确保该命令按照您的预期执行。
为 SQLite 安装数据库浏览器
要在 Ubuntu 上安装 DB4S,请使用以下命令(同样,请注意安装仍使用旧名称):
sudo apt-get install sqlitebrowser

在 Fedora 上,您键入:
sudo dnf install sqlitebrowser

在 Manjaro 上,我们使用 pacman
:
sudo pacman -Sy sqlitebrowser

从 SQL 文件导入数据库
当 DB4S 启动时,它没有加载数据库。我们将研究两种导入数据和数据库表定义的方法,以及如何创建自己的数据库。

有时,您可能会收到或发送 SQL 格式的数据库转储文件。这包含重新创建数据库并将其数据插入数据库所需的说明。
用于导入表定义和数据的另一种常用格式是逗号分隔值 (CSV) 格式。您可以使用数据生成站点(例如数据库测试数据)来生成用于练习目的的虚拟数据。然后,您可以将数据导出为 SQL 或 CSV。
下面是我们在该站点上创建的 SQL 文件。导出后,我们对其进行了编辑,并在文件顶部添加了一行,这是 SQLite 所必需的:
BEGIN TRANSACTION;

然后我们保存了文件。在 DB4S 中,我们单击“文件”>“导入”>“来自 SQL 文件的数据库”。
一个文件选择对话框打开,所以我们可以选择我们的 SQL 文件。在我们的示例中,它称为“database_dump.sql”,它位于我们主目录的根目录中。

选择文件后,我们单击“打开”,然后将打开一个文件保存对话框。您现在必须命名新数据库并决定将其保存在何处。我们称我们的“geekbase.sqlite3”,并将其保存在我们的主目录中。

当您准备好继续时,点击“保存”。我们已经确定了我们的源 SQL 文件并命名了我们的新数据库,因此现在可以开始导入过程。完成后,您会看到下面的通知对话框。

因为我们已经将表和数据添加到数据库中,所以系统会提示我们保存这些更改,因此我们单击“保存”进行保存。

DB4S 主窗口现在将显示我们数据库的结构。

创建了两个表,尽管 SQL 文件中只有一个表的定义。这是因为“id”字段被定义为自动递增字段。每当将新记录添加到数据库时,它将自动添加。 SQLite 创建一个表来跟踪自动递增的字段。
单击“浏览数据”选项卡以查看新添加的记录。

当然,数据库的强大之处在于它能够搜索和提取记录。对于支持 SQL 的数据库,我们使用 SQL 语言来执行此操作。首先,“执行 SQL”选项卡。

我们添加了以下 SQL 命令:
SELECT * FROM account_details WHERE last_name LIKE "%ll%" ORDER BY state
这将搜索姓氏中带有双“l”的人,结果将按州排序。单击蓝色箭头(它看起来像一个“播放”按钮)以运行您的 SQL 命令。结果显示在下方窗格中。
我们有四个姓氏中包含双“l”的记录,它们按州字母顺序排序,从亚利桑那州到威斯康星州。
从 CSV 文件导入数据库表
我们还可以从合适的 CSV 文件中导入表格。最方便的方法是将 CSV 文件中的表字段名称作为文本的第一行。以下是 CSV 文件的一小部分。

第一行包含字段名称:first_name、last_name、created、email、state 和 ID。其他行包含将添加到表中的每条记录的数据值。这是和以前一样的数据;只有文件格式发生了变化。
当您导入 CSV 数据时,您必须创建一个空数据库,以便您可以将其导入到其中。为此,请单击工具栏中的“新建数据库”。

文件保存对话框打开。命名您的新数据库并决定将其保存在何处。我们将调用我们的“howtogeek.sqlite3”并将其保存在我们的主目录中。

出现“编辑表定义”对话框时,单击“取消”。返回主 DB4S 窗口,单击文件 > 导入 > 来自 CSV 文件的表。将打开一个文件选择对话框,您可以在其中选择 CSV 文件。

在我们的示例中,它称为“users.csv”,它位于我们主目录的根目录中。单击“打开”,将出现一个预览对话框,向您展示 DB4S 将如何解释 CSV 数据。

文件的名称用作表的名称。如果需要,您可以对其进行编辑,只需确保选中“第一行中的列名”旁边的复选框即可。
单击“确定”(在上图中它位于屏幕外)。数据已导入,如果一切正常,您应该会看到“导入已完成”对话框;单击“确定”。

单击“浏览数据”,您将看到导入的数据。

不过,我们仍然需要进行一些小调整。单击“数据库结构”选项卡,选择表的名称,然后单击工具栏中的“修改表”。

在“编辑表定义”对话框中,选中“id”字段中的“AI”(自动递增)复选框。

“PK”(主键)复选框会自动为您选中;单击“确定”。这会将“id”字段设置为自动递增。我们现在可以向数据库中添加一条新记录以验证它是否正常工作。
单击“执行 SQL”选项卡,然后在上方窗格中键入以下 SQL(请注意,我们为除“id”之外的所有字段提供值):
INSERT INTO "users"
("first_name","last_name","created","email","state")
VALUES ('Dave','McKay','12/08/2020','dave@llk.com','Idaho');

单击蓝色箭头(看起来是一个播放按钮)以运行您的 SQL 命令。单击“浏览数据”并滚动到底部。您应该看到新添加的记录有一个自动提供的“id”字段,其值比之前的最高“id”值高一个。

手动创建数据库
如果您没有要导入的 SQL 或 CVS 文件,则必须手动创建数据库。要开始,请单击“新建数据库”,然后会出现一个文件保存对话框。键入新数据库的名称以及要保存它的位置。
我们将其命名为“geeksrock.sqlite3”,并将其保存在“Documents”目录中。在命名数据库并导航到要保存它的位置后,单击“保存”。

当要求确认您的选择时,请再次单击“保存”。

出现“编辑表定义”对话框。为您的新表命名(我们称我们的表为“老鹰”),然后单击“添加字段”。您现在可以为该字段键入一个名称,并从“类型”下拉菜单中选择它将包含的信息类型。

我们添加了一个文本字段来保存鹰的名字,以及一个实数(浮点数)数字字段来保存翼展。

每个字段旁边的复选框和其他选项允许您添加以下行为:
- NN (Not Null):设置此选项时,该字段不能留空。如果您尝试添加记录而不为此字段提供值,它将被拒绝。
- PK (主键):为表中的记录提供唯一标识符的一个字段(或一组字段)。这可能是一个简单的数值,就像我们上面介绍的自动递增整数字段一样。但是,在用户帐户表中,它可能是用户名。一张表中只能有一个主键。
- AI (自动递增):可以自动填充数字字段,并使用次高的未使用值。我们在上述示例的“id”字段中使用了它。
- U(唯一):每条记录中的该字段必须包含唯一值,这意味着该字段在表中不能有任何重复项。
- 默认值:如果添加的记录在此字段中没有值,则将提供默认值。
- 检查:添加记录时可以对字段执行检查。例如,您可以检查电话号码字段中的值是否至少包含 10 个字符。
- Collation: Sqlite 可以使用不同的字符串比较方法。默认为
BINARY
。其他选项是不区分大小写的NOCASE
和忽略尾随空格的RTRIM
。在大多数情况下,您可以将其保留为默认值。 - 外键:记录中的一个字段或一组字段,必须与另一个表中的键匹配。例如,在车间工具数据库中,您可能有一个单独工具表和另一个工具类别表。如果工具类别是“锤子”、“扳手”和“螺丝刀”,则不能添加“凿子”类型的记录。
添加所需字段后单击“确定”。创建数据库并添加第一个表后,您可以添加一些记录。
在“Execute SQL”选项卡中,我们多次使用SQL INSERT语句向表中添加一些记录。

我们还可以使用“浏览数据”选项卡来查看我们的新记录。

如果您更喜欢通过用户界面添加新记录,请单击工具栏上的“新建记录”。然后您可以在不了解 SQL 的情况下为新记录输入值。
其他应用程序的数据库
您还可以使用 DB4S 查看属于其他应用程序的 SQLite 数据库。检查其他数据库的结构或内容可能具有启发性(或只是有趣)。但是,不要对其他应用程序拥有的数据库进行更改很重要,否则您可能对该应用程序的操作产生不利影响。
让我们看一下 Firefox 创建和维护的 SQLite 数据库之一。单击工具栏上的“打开数据库”,将出现一个文件打开对话框。 Firefox 将其文件保存在名为“firefox”的目录中,该目录位于您的主目录中名为“.mozilla”的隐藏目录中。
在我们的测试机器上,我们在这个位置找到了 Firefox SQLite 数据库:“home/dave/.mozilla/firefox/vpvuy438.default-release”;你的将在类似的位置。

我们要打开“cookies.sqlite”数据库,所以我们突出显示该文件,然后单击“打开”。打开数据库后,您可以检查其表结构、字段定义和数据。

在这里,我们可以看到各种 Google 和 YouTube cookie。
导出提供见解
导出数据库(通过单击文件 > 导出 > 数据库到 SQL 文件)也很有用。通过查看数据库的 SQL 转储,您可以看到在 SQL 语句中呈现的数据库的整个模式。