SELECT 从一个或多个表中检索数据 — 它是最常用的 SQL 语句。您指定想要的列和所来自的表,可选地对结果进行过滤、排序和限制。
基本 SELECT
sql
SELECT name, email
users;
users;
name full_name
users;
SELECT 从一个或多个表中检索数据 — 它是最常用的 SQL 语句。您指定想要的列和所来自的表,可选地对结果进行过滤、排序和限制。
SELECT name, email
users;
users;
name full_name
users;
在 SELECT 后列出要返回的列(或用 * 表示全部),在 FROM 后列出表。别名(AS)重命名结果中的列。
-- ❌ SELECT * fetches every column — wasteful, fragile (breaks if columns change)
SELECT * FROM users;
-- ✅ select only what you need — less data transferred, clearer intent, more stable
SELECT id, name, email FROM users;
虽然 SELECT * 对于探索很方便,但在实际代码中您应该仅选择需要的列 — 它传输更少的数据、意图更清晰,且如果表的列改变也不会损坏。
SELECT
name,
price * quantity AS total, -- a calculated column
UPPER(name) AS name_upper, -- a function applied to a column
price * 1.1 AS price_with_tax
FROM orders;
SELECT 可以包含表达式和函数,不仅仅是普通列。
SELECT name -- 5. select columns (runs near-last logically)
FROM users -- 1. from the table
WHERE active = true -- 2. filter rows
GROUP BY country -- 3. group
HAVING COUNT(*) > 5 -- 4. filter groups
ORDER BY name -- 6. sort
LIMIT 10; -- 7. limit
LOGICAL execution order (NOT the written order):
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
→ This is why you can't use a SELECT alias in WHERE (WHERE runs before SELECT).
SELECT 是查询数据的基础 — 是最常用的 SQL 语句,是从任何关系数据库读取的中心,因此掌握它是必不可少的日常知识。
了解如何指定列、使用别名和包含计算表达式涵盖了检索和塑形数据的基础知识。
一个重要的实践是在应用代码中避免 SELECT *(仅选择必要的列可以传输更少的数据、更清晰,且对模式变化更稳健 — 一个常见的最佳实践)。
特别有价值的是理解查询的逻辑执行顺序(FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT),它与编写的顺序不同,解释了真实的行为 — 比如为什么您不能在 WHERE 子句中引用 SELECT 别名(因为 WHERE 逻辑上在 SELECT 之前运行)。
这种查询实际处理方式的心智模型是编写正确查询和调试令人困惑的错误的基础。
由于使用 SELECT 读取数据是最常见的数据库操作,且由于理解列选择、别名、表达式,尤其是逻辑查询顺序是所有查询的基础,掌握 SELECT 语句是任何使用 SQL 数据库的人必须掌握的核心知识。