Skip to content

第一章|查询、过滤与排序 ​

本章目标 ​

建立 SQL 查询的基础认知:如何安装数据库、连接客户端、编写 SELECT 语句、过滤数据、排序结果。

从安装 PostgreSQL 或 MySQL 开始,理解表、行、列的概念,掌握 SELECT 的基本语法,学会用 WHERE 过滤数据,用 ORDER BY 排序,用 LIMIT 分页,用 DISTINCT 去重。

学习路径 ​

按顺序阅读以下文章,每篇包含讲解、示例和练习:

  1. 数据库安装与连接:PostgreSQL、MySQL 与客户端
    安装数据库服务器,连接客户端,创建第一个数据库和表。

  2. SELECT 与列:选择、别名与表达式
    使用 SELECT 查询数据,选择列,使用别名,计算表达式。

  3. WHERE 过滤:比较、逻辑与 NULL
    使用 WHERE 子句过滤行,掌握比较运算符、逻辑运算符、NULL 处理。

  4. ORDER BY 与 LIMIT:排序与分页
    使用 ORDER BY 排序结果,使用 LIMIT 限制返回行数,实现分页。

  5. DISTINCT 与去重
    使用 DISTINCT 去除重复行,理解去重的性能影响。

关键概念 ​

表、行与列 ​

关系数据库用表(table)组织数据。表由行(row)和列(column)组成:

  • 列定义数据的类型和结构(如姓名、年龄)
  • 行是具体的数据记录(如"张三,25岁")
sql
-- 表结构示例
CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

SELECT 语句结构 ​

基本的 SELECT 语句包含多个子句,按特定顺序执行:

sql
SELECT column1, column2       -- 选择列
FROM table_name               -- 从哪个表
WHERE condition               -- 过滤行
ORDER BY column1              -- 排序
LIMIT n;                      -- 限制返回行数

执行顺序:FROM → WHERE → SELECT → ORDER BY → LIMIT

NULL 的三值逻辑 ​

SQL 中的 NULL 表示"未知"或"不存在",它不等于任何值,包括它自己:

sql
NULL = NULL  -- 结果是 NULL,不是 TRUE
NULL != NULL -- 结果也是 NULL

检查 NULL 必须使用 IS NULL 或 IS NOT NULL。

排序规则 ​

ORDER BY 默认升序(ASC),可以指定降序(DESC):

sql
ORDER BY age ASC   -- 从小到大
ORDER BY age DESC  -- 从大到小

多列排序时,先按第一列排序,相同值再按第二列排序。

前置知识 ​

  • 了解文件系统基本操作
  • 能够打开终端或命令行
  • 具备基本的编程概念(可选,完全新手也可以从头开始)

后续章节 ​

完成本章后,继续学习:

练习答案 ​

本章所有练习的答案和详细解释:第一章练习答案

深入阅读 ​

为什么 SQL 的执行顺序不是从上到下? ​

SELECT 语句的书写顺序和执行顺序不同。书写时先写 SELECT,但执行时先执行 FROM(确定数据源)、再执行 WHERE(过滤行)、然后才执行 SELECT(选择列)。理解这个顺序有助于解释为什么 WHERE 中不能使用 SELECT 中定义的列别名。

NULL 为什么这么特殊? ​

NULL 代表"未知",而不是零或空字符串。三值逻辑(TRUE、FALSE、NULL)是 SQL 的核心特性。WHERE 子句只返回结果为 TRUE 的行,NULL 会被过滤掉。这解释了很多初学者遇到的"数据不见了"问题。

返回SQL 学习路线 · 开始第一节

用心记录每一步成长