介绍
在这个实验中,你将学习使用 SQLite 处理数据的基本操作。SQLite 是一种轻量级的、基于文件的数据库,非常适合初学者。通过在 LabEx VM 环境中的实践操作,你将创建一个数据库,设置表,并执行核心任务,例如插入数据、查询记录、更新信息和删除条目。这个循序渐进的指南将帮助你使用简单的 SQL 命令,为数据库新手构建坚实的数据库管理基础。
在这个实验中,你将学习使用 SQLite 处理数据的基本操作。SQLite 是一种轻量级的、基于文件的数据库,非常适合初学者。通过在 LabEx VM 环境中的实践操作,你将创建一个数据库,设置表,并执行核心任务,例如插入数据、查询记录、更新信息和删除条目。这个循序渐进的指南将帮助你使用简单的 SQL 命令,为数据库新手构建坚实的数据库管理基础。
在第一步中,你将创建一个 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(唯一标识符)、name 和 email。在 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 表的 name 和 email 列中。VALUES ('Alice', 'alice@example.com') 提供了要为每个记录插入的值。要确认数据已正确添加,请运行以下命令以查看表中的所有记录:
SELECT * FROM users;
预期输出:
1|Alice|alice@example.com
2|Bob|bob@example.com
3|Charlie|charlie@example.com
此输出显示每个记录的 id、name 和 email。SELECT * 命令检索指定表中的所有列。
在这一步中,你将学习如何使用 SELECT 语句从表中检索数据。查询数据是使用数据库的核心技能,因为它允许你查看和分析存储的信息。
在 sqlite> 提示符下,让我们首先从 users 表中检索所有数据。运行以下命令:
SELECT * FROM users;
预期输出:
1|Alice|alice@example.com
2|Bob|bob@example.com
3|Charlie|charlie@example.com
SELECT * 中的 * 表示“所有列”,因此该命令显示 users 表中的每一列和每一行。
接下来,你可以选择要显示的特定列。要仅查看 name 和 email 列,请运行:
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 users 从 users 表中选择所有列。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 有效处理数据的基础知识。