SELECT:精准定位所需数据
SELECT语句是SQL查询的基石,它决定了最终结果集中将包含哪些列。您可以指定具体的列名,也可以使用通配符``来选择所有列。例如,`SELECT first_name, last_name FROM employees;`仅返回员工的名字和姓氏,而`SELECT FROM employees;`则会返回员工表中的所有信息。精确选择所需的列而非总是使用``,能有效减少网络传输的数据量并提升查询性能。
FROM:明确数据来源
FROM子句用于指定查询所涉及的一个或多个表(或视图)。它是查询的源头,指明了数据存储在何处。无论是从单表查询简单信息,还是通过JOIN操作关联多个复杂表,FROM子句都是必不可少的。例如,`FROM orders`指明了数据来源于订单表。当需要连接多个表时,如`FROM customers JOIN orders ON customers.id = orders.customer_id`,它定义了表之间的关系和连接条件。
WHERE:设置数据过滤条件
WHERE子句是筛选记录的关键,它根据指定的条件来过滤FROM子句返回的结果。只有满足条件的行才会被包含在最终结果集中。它使用各种运算符(如`=`, `<>`, `>`, `<`, `BETWEEN`, `IN`, `LIKE`等)来构建过滤逻辑。例如,`WHERE salary > 50000`会筛选出薪资高于5万的员工,`WHERE department = 'Sales' AND hire_date > '2020-01-01'`则会进一步组合条件,找出销售部门在2020年以后入职的员工。
GROUP BY:对数据进行分组聚合
GROUP BY子句将共享某一属性值的行分到一组,并与聚合函数(如`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()`)结合使用,为每个组计算汇总值。它常用于生成分类统计报表。例如,要计算每个部门的平均薪资,可以使用`SELECT department, AVG(salary) FROM employees GROUP BY department;`。它将员工按部门分组,然后计算每个组的平均薪资。
HAVING:过滤分组后的结果
HAVING子句的作用类似于WHERE,但它的过滤对象是GROUP BY子句产生的分组结果,而不是原始的行数据。WHERE在数据分组前进行过滤,而HAVING在数据分组后对组进行过滤。例如,想找出平均薪资超过7万的部门,仅靠WHERE无法实现,需要使用`SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 70000;`。HAVING条件中通常包含聚合函数。
ORDER BY:排序结果集
ORDER BY子句用于对最终的查询结果按照一个或多个列进行排序。您可以指定升序(`ASC`,默认)或降序(`DESC`)。它使得输出的数据更具有可读性和条理性。例如,`ORDER BY last_name ASC, first_name ASC`会按姓氏和名字的字母顺序升序排列结果。`ORDER BY hire_date DESC`则会按入职日期从最新到最旧的顺序排列。
JOIN:关联多表数据
JOIN操作是数据库查询的核心功能之一,用于根据表之间的相关列合并来自两个或多个表的行。常用的JOIN类型包括:INNER JOIN(返回两表中匹配的行)、LEFT JOIN(返回左表所有行及右表中匹配的行)、RIGHT JOIN(返回右表所有行及左表中匹配的行)和FULL JOIN(返回左右表中所有的行)。通过JOIN,可以将分散在不同表中的关联数据整合在一起,形成完整的业务视图。
2032

被折叠的 条评论
为什么被折叠?



