第 1 课
什么是 SQL
理解 SQL 作为查询和修改关系型数据的声明式语言。
SQL 是用于处理关系型数据的语言。它和普通应用代码不同:你通常不是逐步描述数据库应该怎么做,而是描述你想要什么结果,例如从哪张表取哪些行、按什么条件过滤、如何和另一张表关联、按什么字段汇总。
一条简单查询像这样:
SELECT id, email
FROM users
WHERE status = 'active'
ORDER BY created_at DESC;
它表达的是:从 users 表返回 id 和 email,只保留 active 用户,并按创建时间从新到旧排序。
开发者为什么会遇到 SQL
即使项目使用 ORM,SQL 也仍然出现在很多生产场景里:
- 读写关系型数据的 API 接口
- 管理后台和报表查询
- 慢查询日志与数据库错误信息
- 迁移、约束、索引和数据修复脚本
- 代码评审中需要理解的数据访问变更
实用 SQL 能力不是背完所有数据库特性,而是能读懂查询结构、发现风险假设,并把一条密集语句拆成可理解的部分。
SQL 不是每个数据库都完全一样
SQL 有共同核心,但不同数据库存在方言差异。PostgreSQL、MySQL、SQLite、SQL Server 在函数、引用符、日期处理、JSON 操作、分页和过程语法上都可能不同。
当格式化工具要求选择方言时,尽量选择 SQL 的来源数据库。简单查询可以用通用 SQL,但真实应用查询常常带有厂商语法。
关键结论
先把 SQL 当作结构化文本阅读:选择列、来源表、过滤、JOIN、分组、排序和限制。结构看清楚后,调试就会容易很多。
可以把一条查询粘贴到 SQL 格式化工具 中,先标出每个子句,再考虑如何修改。