SELECT 语句从数据库中检索数据,由几个核心组成部分构成。最基本的结构包括指定要返回的列的 SELECT
子句,以及标识要查询的表或多个表的 FROM
子句。例如,SELECT name, age FROM users;
从 users
表中检索 name
和 age
列。可选的子句如 WHERE
用于添加条件来过滤行:SELECT * FROM users WHERE age > 30;
返回所有年龄大于 30 岁的用户的所有列。这些基础组件允许开发者定义要获取什么数据以及在哪里找到这些数据。
除了基础部分,GROUP BY
和 HAVING
子句用于组织和过滤聚合数据。GROUP BY
按一个或多个列对行进行分组,常与聚合函数(如 COUNT()
或 SUM()
)一起使用。例如,SELECT department, COUNT(*) FROM employees GROUP BY department;
计算每个部门的员工数量。HAVING
子句用于过滤分组后的结果,类似于 WHERE
但在聚合后应用:SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5;
显示员工人数超过五人的部门。此外,ORDER BY
用于对结果进行排序(SELECT name FROM users ORDER BY age DESC;
),而 LIMIT
限制返回的行数(SELECT * FROM products LIMIT 10;
)。这些子句细化了数据的处理和呈现方式。
更高级的功能包括用于组合表的 JOIN
操作,使用 AS
的别名,以及像 DISTINCT
这样的修饰符。JOIN
子句根据相关列连接表:SELECT users.name, orders.total FROM users JOIN orders ON users.id = orders.user_id;
将用户与其订单配对。别名简化了复杂的查询:SELECT COUNT(*) AS total_users FROM users;
重命名结果列。DISTINCT
删除重复项:SELECT DISTINCT city FROM customers;
列出唯一的城市。子查询也可以嵌套在 SELECT
、FROM
或 WHERE
子句中,用于动态过滤。这些组件使开发者能够处理复杂的数据关系并针对特定用例优化输出。