如何在 Ubuntu 20.04 上安装和使用 SQLite

作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠

介绍

SQLite是一个免费的跨平台数据库管理系统。它因其效率和与许多不同编程语言接口的能力而广受欢迎。

在本教程中,您将在 Ubuntu 20.04 上安装 SQLite。然后,您将创建一个数据库、从中读取数据、插入项目、删除项目以及从单独的表中连接项目。

注意:本教程包括安装和使用 SQLite 的实用说明。它不涉及更大的概念问题和生产问题,例如何时应该或不应该考虑使用 SQLite 数据库。有关流行的关系数据库及其比较方式的出色概述,请查看我们的文章SQLite 与 MySQL 与 PostgreSQL:关系数据库管理系统的比较

此外,许多语言保持与 SQLite 的集成。有关在 Python 代码中使用 SQLite 的说明,请查看我们的教程,如何sqlite3在 Python 3 中使用模块

先决条件

要完成本教程,您需要:

步骤 1 — 在 Ubuntu 20.04 上安装 SQLite

要在 Ubuntu 上安装 SQLite 命令行界面,首先更新您的软件包列表:

  • sudo apt update

现在安装 SQLite:

  • sudo apt install sqlite3

要验证安装,请检查软件的版本:

  • sqlite3 --version

您将收到如下输出:

Output
3.31.1 2020-01-27 19:55:54 3bfa9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837balt1

安装 SQLite 后,您现在可以创建新数据库了。

第 2 步 – 创建 SQLite 数据库

在此步骤中,您将创建一个包含不同鲨鱼及其属性的数据库。要创建数据库,请打开终端并运行以下sqlite3命令:

  • sqlite3 sharks.db

这将创建一个名为sharks. 如果文件sharks.db已经存在,SQLite 将打开一个连接;如果它不存在,SQLite 将创建它。

您将收到如下输出:

Output
SQLite version 3.31.1 2020-01-27 19:55:54 Enter ".help" for usage hints.

在此之后,您的提示将发生变化。一个新的前缀sqlite>, 现在出现:

如果该文件sharks.db尚不存在,并且您在sqlite不运行任何查询的情况下退出升级,sharks.db则不会创建该文件为了确保文件被创建,您可以通过键入;然后按“Enter”来运行一个空查询这样,您将确保实际创建了数据库文件。

创建 Shark 数据库后,您现在将创建一个新表并用数据填充它。

第 3 步 – 创建 SQLite 表

SQLite 数据库被组织成表。表存储信息。为了更好地可视化表格,可以想象行和列。

本教程的其余部分将遵循输入 SQLite 命令的通用约定。SQLite 命令是大写的,用户信息是小写的。必须以分号结尾。

现在让我们为各种数据创建一个表和一些列:

  • 身份证
  • 鲨鱼的名字
  • 鲨鱼的种类
  • 鲨鱼的平均长度(厘米)

使用以下命令创建表:

  • CREATE TABLE sharks(id integer NOT NULL, name text NOT NULL, sharktype text NOT NULL, length integer NOT NULL);

使用NOT NULL使该字段成为必需。我们将NOT NULL在下一节中更详细地讨论

创建表后,将返回一个空提示。现在让我们在其中插入一些值。

将值插入表中

在 SQLite 中,将值插入表的命令遵循以下一般形式:

  • INSERT INTO tablename VALUES(values go here);

tablename表的名称在哪里,并values放在括号内。

现在VALUESsharks表中插入三行

  • INSERT INTO sharks VALUES (1, "Sammy", "Greenland Shark", 427);
  • INSERT INTO sharks VALUES (2, "Alyoshka", "Great White Shark", 600);
  • INSERT INTO sharks VALUES (3, "Himari", "Megaladon", 1800);

因为您之前NOT NULL为表中的每个变量指定了值,所以您必须为每个变量输入一个值。

例如,尝试添加另一条鲨鱼而不设置其长度:

  • INSERT INTO sharks VALUES (4, "Faiza", "Hammerhead Shark");

您将收到此错误:

Output
Error: table sharks has 4 columns but 3 values were supplied

在此步骤中,您创建了一个表并向其中插入了值。在下一步中,您将从数据库表中读取。

第 4 步 – 在 SQLite 中读取表

在这一步中,我们将重点介绍从表中读取数据的最基本方法。认识到 SQLite 提供了更具体的方法来查看表中的数据。

要查看包含所有插入值的表,请使用SELECT

  • SELECT * FROM sharks;

您将看到之前插入的条目:

Output
1|Sammy|Greenland Shark|427 2|Alyoshka|Great White Shark|600 3|Himari|Megaladon|1800

要根据条目id(我们手动设置的值)查看条目,请将WHERE命令添加到您的查询中:

  • SELECT * FROM sharks WHERE id IS 1;

这将返回id等于的鲨鱼1

Output
1|Sammy|Greenland Shark|427

让我们仔细看看这个命令。

  1. 首先,我们SELECT所有 ( *) 值来自我们的数据库,sharks.
  2. 然后我们查看所有id值。
  3. 然后我们返回所有id等于 的表条目1

到目前为止,您已经创建了一个表,向其中插入了数据,并查询了保存的数据。现在您将更新现有表。

第 5 步 – 在 SQLite 中更新表

在以下两部分中,您将首先向现有表中添加一个新列,然后更新表中的现有值。

向 SQLite 表添加列

SQLite 允许您使用ALTER TABLE命令更改表这意味着您可以创建新的行和列,或修改现有的行和列。

使用ALTER TABLE创建一个新列。这个新专栏将跟踪每条鲨鱼的年龄(以年为单位):

  • ALTER TABLE sharks ADD COLUMN age integer;

您现在有第五列,age.

更新 SQLite 表中的值

使用该UPDATE命令,age为每条鲨鱼添加新值:

  • UPDATE sharks SET age = 272 WHERE id=1;
  • UPDATE sharks SET age = 70 WHERE id=2;
  • UPDATE sharks SET age = 40 WHERE id=3;
Output
1|Sammy|Greenland Shark|427|272 2|Alyoshka|Great White Shark|600|70 3|Himari|Megaladon|1800|40

在此步骤中,您更改了表的组成,然后更新了表内的值。在下一步中,您将从表中删除信息。

步骤 6 — 在 SQLite 中删除信息

在此步骤中,您将根据对参数的评估删除表中的条目。

在以下命令中,您将查询数据库并请求它删除sharks表中年龄小于 200 的所有鲨鱼

  • DELETE FROM sharks WHERE age <= 200;

键入SELECT * FROM sharks;将验证AlyoshkaHimari均小于 200 岁,已被删除。只剩Sammy下格陵兰鲨鱼:

Output
1|Sammy|Greenland Shark|427|272

步骤 7 — 在 SQLite 中加入信息

假设我们有两个表:当前sharks表和一个endangered表。现在,如果该endangered表有一个id映射到表中idssharks,并且它也有一个status表示每条鲨鱼的保护状态的值呢?

如果您想从两个表中查询数据,您可以使用 SQLite 的四个连接命令之一:

  • INNER JOIN
  • OUTER JOIN
  • LEFT JOIN
  • CROSS JOIN

让我们创建第二个表,然后用于INNER JOIN连接一些数据。

首先,创建您的endangered表:

  • CREATE TABLE endangered (id integer NOT NULL, status text NOT NULL);
  • INSERT INTO endangered VALUES (1, "near threatened");

现在加入你的表:

  • SELECT * FROM sharks INNER JOIN endangered on sharks.id = endangered.id;`

您的输出将如下所示:

Output
1|Sammy|Greenland Shark|427|272|1|near threatened

请注意,输出还包括id来自endangered您可以使用更明确的命令指定所需的输出:

  • SELECT sharks.id, sharks.name, sharks.sharktype, sharks.length, sharks.age, endangered.status FROM sharks INNER JOIN endangered on sharks.id = endangered.id;

这次输出不包括第二个id值:

Output
1|Sammy|Greenland Shark|427|272|near threatened

您现在已经成功地连接了来自多个表的信息。

结论

SQLite 是一个有用的数据库管理工具。人们可以快速创建一个数据库并使用各种命令对其进行操作。按照本教程,您现在对 SQLite 有了基本的了解,并且准备更深入地了解这个数据库管理系统。

有关关系数据库系统及其比较的出色概述,请查看我们的文章SQLite vs MySQL vs PostgreSQL:关系数据库管理系统的比较

此外,许多语言保持与 SQLite 的集成。有关在 Python 代码中使用 SQLite 的说明,请查看我们的教程,如何sqlite3在 Python 3 中使用模块

对于 SQLite 语法的具体帮助,官方文档是另一个很好的资源

觉得文章有用?

点个广告表达一下你的爱意吧 !😁