2. SQL 基础回顾:为数据探查打下坚实基础

在开始数据质量探查之前,必须牢固掌握 SQL 的核心查询语法。本章将快速回顾最常用的五个基础子句:SELECT、WHERE、DISTINCT、ORDER BY 和 LIMIT。这些是后续进行数据探查、发现异常、统计分布的基石。

学习目标: 熟练使用 SQL 基础语法从表中提取、过滤、去重、排序和限制数据行,为数据质量探查的“看数据”阶段做好准备。

2.1 SELECT 查询语法:从表中读取数据

SELECT 是 SQL 中最核心的语句,用于指定要从数据库表中检索哪些列。其基本语法结构如下:

SELECT 列名1, 列名2, ...
FROM 表名;
  • 查询所有列: 使用星号 * 通配符,但在生产环境中应尽量避免,因为它会返回所有列,影响性能且不明确。
  • 查询特定列: 明确列出需要的列名,用逗号分隔,这是最佳实践。
  • 使用别名: 使用 AS 关键字为列或表指定临时名称,增强可读性。
-- 查询所有列(不推荐用于探查)
SELECT * FROM customer;

-- 查询特定列并设置别名
SELECT customer_id, customer_name AS name, city
FROM customer;

2.2 WHERE 条件过滤:精准定位数据

WHERE 子句用于过滤记录,只返回满足指定条件的行。这是数据探查中筛选异常值、特定范围数据的核心工具。

运算符 描述 示例
= 等于 WHERE status = 'ACTIVE'
<> 或 != 不等于 WHERE city <> 'Beijing'
>, <, >=, <= 比较运算符 WHERE age >= 18
BETWEEN ... AND ... 在某个范围内(包含边界) WHERE salary BETWEEN 5000 AND 10000
IN (...) 匹配列表中的任意值 WHERE dept IN ('HR', 'IT')
LIKE 模式匹配(% 表示任意字符,_ 表示单个字符) WHERE email LIKE '%@company.com'
IS NULL 判断是否为空值 WHERE phone IS NULL
-- 探查年龄在 20 到 30 岁之间的活跃用户
SELECT user_id, user_name, age, status
FROM users
WHERE age BETWEEN 20 AND 30
  AND status = 'ACTIVE';

2.3 DISTINCT 去重:识别唯一值

DISTINCT 关键字用于返回唯一不同的值。在数据质量探查中,它常用于快速了解某列有多少种不同的取值,是发现重复数据或枚举值异常的第一步。

-- 查看所有不重复的城市
SELECT DISTINCT city
FROM customer;

-- 查看所有不重复的城市-状态组合
SELECT DISTINCT city, status
FROM customer;
注意: DISTINCT 作用于其后所有列的组合,而不是单独作用于某一列。例如 SELECT DISTINCT city, status 返回的是 (city, status) 组合的唯一值。

2.4 ORDER BY 排序:让数据有序呈现

ORDER BY 子句用于对结果集按照一个或多个列进行排序。在探查数据时,排序可以帮助我们快速找到最大值、最小值或异常分布。

  • 升序: 使用 ASC(默认,可省略)。
  • 降序: 使用 DESC。
  • 多列排序: 先按第一列排序,如果相同再按第二列排序。
-- 按注册日期降序排列,查看最新用户
SELECT user_id, user_name, registration_date
FROM users
ORDER BY registration_date DESC;

-- 先按城市升序,再按年龄降序
SELECT city, age, user_name
FROM users
ORDER BY city ASC, age DESC;

2.5 LIMIT 限制行数:快速预览数据

LIMIT 子句用于限制查询返回的行数。在数据探查初期,面对海量数据时,使用 LIMIT 可以快速预览数据样本,避免全表扫描带来的性能开销。

-- 查看前 10 条记录
SELECT *
FROM orders
LIMIT 10;

-- 结合 ORDER BY 查看销售额最高的前 5 名
SELECT product_name, sales_amount
FROM products
ORDER BY sales_amount DESC
LIMIT 5;
探查技巧: 在探查未知表时,先用 SELECT * FROM table_name LIMIT 10; 快速了解表结构、列名和数据样式,然后再编写具体的探查逻辑。

2.6 综合示例:数据探查的 SQL 基础流程

以下是一个综合示例,展示了如何组合使用这些基础语法来探查一个订单表:

-- 探查订单表:找出所有不重复的订单状态
SELECT DISTINCT order_status
FROM orders;

-- 探查订单表:查看最近 100 笔订单的概要信息
SELECT order_id, customer_id, order_date, total_amount
FROM orders
ORDER BY order_date DESC
LIMIT 100;

-- 探查订单表:筛选出金额大于 1000 的订单,并按金额降序排列
SELECT order_id, customer_id, total_amount
FROM orders
WHERE total_amount > 1000
ORDER BY total_amount DESC;
SQL 查询子句执行逻辑流程 SQL 查询子句执行逻辑流程 FROM WHERE SELECT DISTINCT ORDER BY LIMIT 执行顺序说明 先过滤行,再选择列 最后排序和限制

2.7 本章小结

本章回顾了 SQL 数据探查的五个基础语法:

  • SELECT:指定要查询的列。
  • WHERE:按条件过滤行。
  • DISTINCT:返回唯一值组合。
  • ORDER BY:对结果排序。
  • LIMIT:限制返回行数。

这些语法是后续进行数据质量探查(如空值检查、重复值识别、分布统计)的基石。请务必通过练习熟练掌握它们。