介绍
在这个实验中,你将学习如何在 SQLite 数据库中查询和过滤数据。这个实践实验是为初学者设计的,将向你介绍必要的 SQL 技术。你将学习如何使用 WHERE 子句过滤数据,使用 LIKE 匹配模式,使用 ORDER BY 排序结果,以及使用 LIMIT 限制结果的数量。在本实验结束时,你将能够有效地从数据库中检索特定数据。
连接到 SQLite 并查看数据
在第一步中,你将连接到一个名为 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 子句过滤数据
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 运算符进行模式匹配
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 子句对数据进行排序
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 子句限制结果数量
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 限制返回的行数。这些技术为你提供了有效检索和组织数据的基本技能。


