介绍
在这个实验中,你将学习如何在 SQLite 数据库中查询和过滤数据。这个实践实验是为初学者设计的,将向你介绍必要的 SQL 技术。你将学习如何使用 WHERE
子句过滤数据,使用 LIKE
匹配模式,使用 ORDER BY
排序结果,以及使用 LIMIT
限制结果的数量。在本实验结束时,你将能够有效地从数据库中检索特定数据。
在这个实验中,你将学习如何在 SQLite 数据库中查询和过滤数据。这个实践实验是为初学者设计的,将向你介绍必要的 SQL 技术。你将学习如何使用 WHERE
子句过滤数据,使用 LIKE
匹配模式,使用 ORDER BY
排序结果,以及使用 LIMIT
限制结果的数量。在本实验结束时,你将能够有效地从数据库中检索特定数据。
在第一步中,你将连接到一个名为 employees.db
的 SQLite 数据库,并查看 staff
表中的数据。这能让你了解你将要处理的数据。
在 LabEx VM 环境中打开一个终端。默认目录是 /home/labex/project
。
使用 sqlite3
命令行工具连接到 employees.db
数据库:
sqlite3 employees.db
这个命令会打开 SQLite shell,由 sqlite>
提示符指示。
查看 staff
表中的数据。执行以下 SQL 命令:
SELECT * FROM staff;
这个命令选择 staff
表中的所有列(*
)并显示结果。你应该看到以下输出:
1|Alice|HR
2|Bob|IT
3|Charlie|HR
4|David|IT
5|Eve|Marketing
6|Frank|IT
这个输出显示了 staff
表中每个员工的 id
、name
和 department
(部门)。
要退出 SQLite shell,输入:
.quit
重要提示: 在点击“Continue” (继续)按钮之前,请确保执行
.quit
命令。否则,由于 sqlite 历史记录不会被记录,因此无法验证此步骤。
WHERE
子句允许你根据特定条件过滤数据。你可以使用它来仅检索符合你标准的行。
连接到 employees.db
数据库:
sqlite3 employees.db
要仅检索来自 HR
部门的员工,请使用以下 SQL 命令:
SELECT * FROM staff WHERE department = 'HR';
这个命令选择 staff
表中的所有列,但仅包括 department
列等于 HR
的行。输出将是:
1|Alice|HR
3|Charlie|HR
现在,让我们查找 id
大于 3 的员工:
SELECT * FROM staff WHERE id > 3;
这个命令选择 staff
表中的所有列,但仅包括 id
列大于 3 的行。输出将是:
4|David|IT
5|Eve|Marketing
6|Frank|IT
退出 SQLite shell:
.quit
重要提示: 在点击“Continue” (继续)按钮之前,请确保执行
.quit
命令。否则,由于 sqlite 历史记录不会被记录,因此无法验证此步骤。
LIKE
运算符用于模式匹配。当你想要查找与特定模式匹配的数据,而不是精确值时,它会很有用。你将使用通配符,例如 %
(零个或多个字符)和 _
(单个字符)。
连接到 employees.db
数据库:
sqlite3 employees.db
要查找名字以 A
开头的员工,请使用以下命令:
SELECT * FROM staff WHERE name LIKE 'A%';
这个命令选择 staff
表中的所有列,但仅包括 name
列以 A
开头的行。%
通配符匹配零个或多个字符。输出将是:
1|Alice|HR
要查找名字包含字母 i
的员工,请使用:
SELECT * FROM staff WHERE name LIKE '%i%';
这个命令选择 staff
表中的所有列,但仅包括 name
列包含字母 i
的行。输出将是:
1|Alice|HR
3|Charlie|HR
4|David|IT
退出 SQLite shell:
.quit
ORDER BY
子句允许你对查询结果进行排序。你可以按升序(默认)或降序排序。
连接到 employees.db
数据库:
sqlite3 employees.db
要按 name
字母顺序升序排列数据,请使用:
SELECT * FROM staff ORDER BY name;
这个命令选择 staff
表中的所有列,并按 name
列以升序(A 到 Z)对结果进行排序。输出将是:
1|Alice|HR
2|Bob|IT
3|Charlie|HR
4|David|IT
5|Eve|Marketing
6|Frank|IT
要按 name
降序排序,请使用:
SELECT * FROM staff ORDER BY name DESC;
这个命令选择 staff
表中的所有列,并按 name
列以降序(Z 到 A)对结果进行排序。输出将是:
6|Frank|IT
5|Eve|Marketing
4|David|IT
3|Charlie|HR
2|Bob|IT
1|Alice|HR
退出 SQLite shell:
.quit
LIMIT
子句限制查询返回的行数。当你只需要数据的一个子集时,这非常有用。
连接到 employees.db
数据库:
sqlite3 employees.db
要仅检索 staff
表中的前 3 行,请使用:
SELECT * FROM staff LIMIT 3;
这个命令选择 staff
表中的所有列,并将结果限制为前 3 行。输出将是:
1|Alice|HR
2|Bob|IT
3|Charlie|HR
将 LIMIT
与 ORDER BY
结合使用,以获取按 name
降序排序的前 2 名员工:
SELECT * FROM staff ORDER BY name DESC LIMIT 2;
这个命令选择 staff
表中的所有列,按 name
列降序对结果进行排序,并将结果限制为前 2 行。输出将是:
6|Frank|IT
5|Eve|Marketing
退出 SQLite shell:
.quit
在这个实验中,你已经学习了如何在 SQLite 数据库中查询和过滤数据。你连接到了一个数据库,使用 WHERE
子句过滤数据,使用 LIKE
运算符匹配模式,使用 ORDER BY
对结果进行排序,以及使用 LIMIT
限制返回的行数。这些技术为你提供了有效检索和组织数据的基本技能。