查询和过滤数据

SQLiteSQLiteBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在这个实验中,你将学习如何在 SQLite 数据库中查询和过滤数据。这个实践实验是为初学者设计的,将向你介绍必要的 SQL 技术。你将学习如何使用 WHERE 子句过滤数据,使用 LIKE 匹配模式,使用 ORDER BY 排序结果,以及使用 LIMIT 限制结果的数量。在本实验结束时,你将能够有效地从数据库中检索特定数据。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sqlite(("SQLite")) -.-> sqlite/SQLiteGroup(["SQLite"]) sqlite/SQLiteGroup -.-> sqlite/get_all("Select All Rows") sqlite/SQLiteGroup -.-> sqlite/query_where("Filter With WHERE") sqlite/SQLiteGroup -.-> sqlite/sort_data("Sort With ORDER BY") subgraph Lab Skills sqlite/get_all -.-> lab-552338{{"查询和过滤数据"}} sqlite/query_where -.-> lab-552338{{"查询和过滤数据"}} sqlite/sort_data -.-> lab-552338{{"查询和过滤数据"}} end

连接到 SQLite 并查看数据

在第一步中,你将连接到一个名为 employees.db 的 SQLite 数据库,并查看 staff 表中的数据。这能让你了解你将要处理的数据。

  1. 在 LabEx VM 环境中打开一个终端。默认目录是 /home/labex/project

  2. 使用 sqlite3 命令行工具连接到 employees.db 数据库:

    sqlite3 employees.db

    这个命令会打开 SQLite shell,由 sqlite> 提示符指示。

  3. 查看 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 表中每个员工的 idnamedepartment(部门)。

  4. 要退出 SQLite shell,输入:

    .quit

    重要提示: 在点击“Continue” (继续)按钮之前,请确保执行 .quit 命令。否则,由于 sqlite 历史记录不会被记录,因此无法验证此步骤。

使用 WHERE 子句过滤数据

WHERE 子句允许你根据特定条件过滤数据。你可以使用它来仅检索符合你标准的行。

  1. 连接到 employees.db 数据库:

    sqlite3 employees.db
  2. 要仅检索来自 HR 部门的员工,请使用以下 SQL 命令:

    SELECT * FROM staff WHERE department = 'HR';

    这个命令选择 staff 表中的所有列,但仅包括 department 列等于 HR 的行。输出将是:

    1|Alice|HR
    3|Charlie|HR
  3. 现在,让我们查找 id 大于 3 的员工:

    SELECT * FROM staff WHERE id > 3;

    这个命令选择 staff 表中的所有列,但仅包括 id 列大于 3 的行。输出将是:

    4|David|IT
    5|Eve|Marketing
    6|Frank|IT
  4. 退出 SQLite shell:

    .quit

    重要提示: 在点击“Continue” (继续)按钮之前,请确保执行 .quit 命令。否则,由于 sqlite 历史记录不会被记录,因此无法验证此步骤。

使用 LIKE 运算符进行模式匹配

LIKE 运算符用于模式匹配。当你想要查找与特定模式匹配的数据,而不是精确值时,它会很有用。你将使用通配符,例如 %(零个或多个字符)和 _(单个字符)。

  1. 连接到 employees.db 数据库:

    sqlite3 employees.db
  2. 要查找名字以 A 开头的员工,请使用以下命令:

    SELECT * FROM staff WHERE name LIKE 'A%';

    这个命令选择 staff 表中的所有列,但仅包括 name 列以 A 开头的行。% 通配符匹配零个或多个字符。输出将是:

    1|Alice|HR
  3. 要查找名字包含字母 i 的员工,请使用:

    SELECT * FROM staff WHERE name LIKE '%i%';

    这个命令选择 staff 表中的所有列,但仅包括 name 列包含字母 i 的行。输出将是:

    1|Alice|HR
    3|Charlie|HR
    4|David|IT
  4. 退出 SQLite shell:

    .quit

使用 ORDER BY 子句对数据进行排序

ORDER BY 子句允许你对查询结果进行排序。你可以按升序(默认)或降序排序。

  1. 连接到 employees.db 数据库:

    sqlite3 employees.db
  2. 要按 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
  3. 要按 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
  4. 退出 SQLite shell:

    .quit

使用 LIMIT 子句限制结果数量

LIMIT 子句限制查询返回的行数。当你只需要数据的一个子集时,这非常有用。

  1. 连接到 employees.db 数据库:

    sqlite3 employees.db
  2. 要仅检索 staff 表中的前 3 行,请使用:

    SELECT * FROM staff LIMIT 3;

    这个命令选择 staff 表中的所有列,并将结果限制为前 3 行。输出将是:

    1|Alice|HR
    2|Bob|IT
    3|Charlie|HR
  3. LIMITORDER BY 结合使用,以获取按 name 降序排序的前 2 名员工:

    SELECT * FROM staff ORDER BY name DESC LIMIT 2;

    这个命令选择 staff 表中的所有列,按 name 列降序对结果进行排序,并将结果限制为前 2 行。输出将是:

    6|Frank|IT
    5|Eve|Marketing
  4. 退出 SQLite shell:

    .quit

总结

在这个实验中,你已经学习了如何在 SQLite 数据库中查询和过滤数据。你连接到了一个数据库,使用 WHERE 子句过滤数据,使用 LIKE 运算符匹配模式,使用 ORDER BY 对结果进行排序,以及使用 LIMIT 限制返回的行数。这些技术为你提供了有效检索和组织数据的基本技能。