使用 SQLite 处理数据

SQLiteBeginner
立即练习

介绍

在这个实验中,你将学习使用 SQLite 处理数据的基本操作。SQLite 是一种轻量级的、基于文件的数据库,非常适合初学者。通过在 LabEx VM 环境中的实践操作,你将创建一个数据库,设置表,并执行核心任务,例如插入数据、查询记录、更新信息和删除条目。这个循序渐进的指南将帮助你使用简单的 SQL 命令,为数据库新手构建坚实的数据库管理基础。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 96%。获得了学习者 100% 的好评率。

创建 SQLite 数据库和表

在第一步中,你将创建一个 SQLite 数据库并设置一个表来存储数据。SQLite 是一个轻量级数据库,它将数据存储在单个文件中,这使得它易于学习。

首先,在 LabEx VM 中打开你的终端。你的默认路径是 /home/labex/project

现在,让我们创建一个名为 mydb.sqlite 的 SQLite 数据库。运行以下命令来创建数据库文件并打开 SQLite 命令行工具:

sqlite3 mydb.sqlite

你将看到一个提示,表明你现在位于 SQLite shell 中:

SQLite version 3.x.x
Enter ".help" for usage hints.
sqlite>

接下来,创建一个名为 users 的表来存储基本用户信息。该表将包含三列:id(唯一标识符)、nameemail。在 sqlite> 提示符下输入以下 SQL 命令,然后按 Enter 键:

CREATE TABLE users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    email TEXT NOT NULL
);

此命令设置 users 表,其中:

  • id 是一个整数,对于每个新条目都会自动递增。PRIMARY KEY 约束确保每个 id 都是唯一的,而 AUTOINCREMENT 使其自动递增。
  • name 是一个文本字段,不能为空(NOT NULL)。
  • email 也是一个文本字段,不能为空(NOT NULL)。

如果命令成功运行,你将看不到任何输出。

向表中插入数据

现在你已经创建了 users 表,让我们向其中添加一些数据。我们将向表中插入三个用户记录。

通过在 sqlite> 提示符下逐个运行以下命令,将三个用户记录插入到 users 表中:

INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com');

这些命令将三行添加到 users 表中。请注意,你没有为 id 列指定值,因为它会随着每个新条目自动递增。

  • INSERT INTO users (name, email) 指定你正在将数据插入到 users 表的 nameemail 列中。
  • VALUES ('Alice', 'alice@example.com') 提供了要为每个记录插入的值。

要确认数据已正确添加,请运行以下命令以查看表中的所有记录:

SELECT * FROM users;

预期输出:

1|Alice|alice@example.com
2|Bob|bob@example.com
3|Charlie|charlie@example.com

此输出显示每个记录的 idnameemailSELECT * 命令检索指定表中的所有列。

使用 SELECT 查询数据

在这一步中,你将学习如何使用 SELECT 语句从表中检索数据。查询数据是使用数据库的核心技能,因为它允许你查看和分析存储的信息。

sqlite> 提示符下,让我们首先从 users 表中检索所有数据。运行以下命令:

SELECT * FROM users;

预期输出:

1|Alice|alice@example.com
2|Bob|bob@example.com
3|Charlie|charlie@example.com

SELECT * 中的 * 表示“所有列”,因此该命令显示 users 表中的每一列和每一行。

接下来,你可以选择要显示的特定列。要仅查看 nameemail 列,请运行:

SELECT name, email FROM users;

预期输出:

Alice|alice@example.com
Bob|bob@example.com
Charlie|charlie@example.com

此命令将输出限制为仅指定的列,省略了 id

最后,使用带有 WHERE 子句的条件来过滤数据。要仅查看 'Alice' 的记录,请运行:

SELECT * FROM users WHERE name = 'Alice';

预期输出:

1|Alice|alice@example.com

WHERE 子句将结果缩小到与条件匹配的行,在本例中,name 为 'Alice' 的行。

  • SELECT * FROM usersusers 表中选择所有列。
  • WHERE name = 'Alice' 过滤结果,仅包括 name 列等于 'Alice' 的行。

更新表中的记录

现在,你将学习如何使用 UPDATE 语句修改表中现有的数据。当你需要更正或更改数据库中的信息时,更新记录非常重要。

首先,检查 users 表中的当前数据,看看你将要更新什么。运行:

SELECT * FROM users;

预期输出:

1|Alice|alice@example.com
2|Bob|bob@example.com
3|Charlie|charlie@example.com

现在,将 'Bob' 的电子邮件地址更新为 bob.new@example.com。在 sqlite> 提示符下输入以下命令:

UPDATE users SET email = 'bob.new@example.com' WHERE name = 'Bob';

如果命令成功,你将看不到任何输出。此命令更改 name 为 'Bob' 的行的 email 值。WHERE 子句确保仅更新匹配的记录。

  • UPDATE users 指定你正在更新 users 表。
  • SET email = 'bob.new@example.com' 设置 email 列的新值。
  • WHERE name = 'Bob' 过滤更新,使其仅应用于 name 为 'Bob' 的行。

通过再次查询表来验证更改:

SELECT * FROM users;

预期输出:

1|Alice|alice@example.com
2|Bob|bob.new@example.com
3|Charlie|charlie@example.com

你可以看到 Bob 的电子邮件已更新。

从表中删除记录

在最后一步中,你将学习如何使用 DELETE 语句从表中删除数据。当你需要清理数据库中过时或不正确的数据时,删除记录是必要的。

首先,查看 users 表中的当前数据,以确定要删除的内容。运行:

SELECT * FROM users;

预期输出:

1|Alice|alice@example.com
2|Bob|bob.new@example.com
3|Charlie|charlie@example.com

现在,通过运行以下命令删除 'Charlie' 的记录:

DELETE FROM users WHERE name = 'Charlie';

如果命令成功,你将看不到任何输出。此命令删除 name 为 'Charlie' 的行。WHERE 子句确保仅删除指定的记录。

  • DELETE FROM users 指定你正在从 users 表中删除。
  • WHERE name = 'Charlie' 过滤删除,使其仅应用于 name 为 'Charlie' 的行。

通过再次查询表来验证删除:

SELECT * FROM users;

预期输出:

1|Alice|alice@example.com
2|Bob|bob.new@example.com

你可以看到 Charlie 的记录已不在表中。

总结

在这个实验中,你已经学习了在 LabEx VM 环境中使用 SQLite 处理数据的基本技能。你创建了一个 SQLite 数据库和表,使用 INSERT INTO 语句插入数据,使用 SELECT 查询信息,使用 UPDATE 更新记录,并使用 DELETE 删除条目。这些实践练习全面介绍了数据库管理,使你掌握了使用 SQLite 有效处理数据的基础知识。