SQLite - SELECT 查询
SQLite - SELECT 查询
Section titled “SQLite - SELECT 查询”SELECT 语句是用于从 SQLite 数据库中检索数据的基石。它以表格形式(称为“结果集” result set)返回数据。
SELECT 语句最基本的形式是从单个表中检索特定列。
SELECT column1, column2, ... FROM table_name;要检索所有列,您可以使用通配符 *。虽然这对于探索很方便,但在应用程序中,最佳实践是只指定您需要的列。
SELECT * FROM table_name;过滤和排序数据
Section titled “过滤和排序数据”您可以使用各种子句来细化结果:
WHERE:根据特定条件过滤记录。ORDER BY:以升序(ASC)或降序(DESC)对结果集进行排序。LIMIT:限制返回的行数。对于分页(pagination)很有用。OFFSET:在开始返回行之前跳过指定数量的行。
假设我们的 EMPLOYEES 表有以下数据:
id | first_name | last_name | age | address | salary---|------------|-----------|-----|------------|---------1 | Paul | Smith | 32 | California | 95000.02 | Allen | Jones | 25 | Texas | 75000.03 | Teddy | Williams | 23 | Norway | 50000.04 | Mark | Brown | 25 | Richmond | 85000.05 | David | Miller | 27 | Texas | 120000.0要获取所有员工的名字、姓氏和薪水,并按薪水降序排序:
sqlite> SELECT first_name, last_name, salary ...> FROM EMPLOYEES ...> ORDER BY salary DESC;这将产生以下结果:
first_name | last_name | salary-----------|-----------|---------David | Miller | 120000.0Paul | Smith | 95000.0Mark | Brown | 85000.0Allen | Jones | 75000.0Teddy | Williams | 50000.0现在,让我们选择年龄为 25 岁且居住在德克萨斯州(Texas)的员工,并将结果限制为一条记录:
sqlite> SELECT * FROM EMPLOYEES ...> WHERE age = 25 AND address = 'Texas' ...> LIMIT 1;此查询将只返回 Allen Jones 的记录。
使用 sqlite3 命令行界面(CLI)
Section titled “使用 sqlite3 命令行界面(CLI)”SQLite 命令行界面提供了一些有用的“点命令”(dot-commands)来格式化输出。这些命令本身不是 SQL 语言的一部分。
sqlite> .headers on -- 显示列标题sqlite> .mode column -- 以列模式显示结果sqlite> .width 10 10 8 -- 设置列宽以更好地对齐使用这些设置再次运行第一个查询,将生成一个整齐格式化的表格。
检查数据库模式
Section titled “检查数据库模式”要查看数据库的结构,您可以查询 sqlite_schema 表。这是检查模式对象(schema objects)的现代标准方法。
-- 列出数据库中的所有表sqlite> SELECT name FROM sqlite_schema WHERE type = 'table';
name----------DEPARTMENTSEMPLOYEES您可以检索任何对象的原始 CREATE 语句。
sqlite> SELECT sql FROM sqlite_schema WHERE type = 'table' AND name = 'EMPLOYEES';