SQL查询基础: SELECT语句入门
SELECT语句是SQL语言的基础,用于从数据库中检索数据。一个最基本的SELECT查询包含两个部分:SELECT子句指定要返回的列,FROM子句指定要查询的表。例如,`SELECT name, age FROM users;`将从users表中检索name和age列。使用`SELECT `可以返回所有列。WHERE子句可以添加过滤条件,如`SELECT FROM users WHERE age > 18;`。ORDER BY子句允许对结果排序,而LIMIT子句可以限制返回的行数。
数据过滤与排序: WHERE和ORDER BY
WHERE子句使用比较运算符(=, <, >, <=, >=, <>)和逻辑运算符(AND, OR, NOT)来过滤记录。例如,`SELECT FROM products WHERE price BETWEEN 10 AND 100 AND category = 'electronics';`。ORDER BY子句通过ASC(升序,默认)或DESC(降序)对结果排序,如`SELECT FROM employees ORDER BY salary DESC, hire_date ASC;`可以按薪资降序、入职日期升序排列。
聚合函数与数据分组
SQL提供了COUNT(), SUM(), AVG(), MAX(), MIN()等聚合函数来执行计算并返回单个值。GROUP BY子句将数据分组,HAVING子句过滤分组结果。例如,`SELECT department, AVG(salary) as avg_salary FROM employees GROUP BY department HAVING AVG(salary) > 50000;`计算各部门平均薪资并筛选出平均值大于50000的部门。
表连接: 关联多表数据
JOIN操作允许合并多个相关表的数据。INNER JOIN返回匹配的行,LEFT JOIN返回左表所有行及匹配的右表行,RIGHT JOIN和FULL OUTER JOIN则分别保留右表或双表所有行。例如,`SELECT orders.order_id, customers.name FROM orders INNER JOIN customers ON orders.customer_id = customers.id;`关联订单和客户信息。
子查询与公共表表达式
子查询是嵌套在主查询中的查询,可用在WHERE、FROM或SELECT子句中。如`SELECT name FROM products WHERE price > (SELECT AVG(price) FROM products);`找出价格高于平均水平的产品。公共表表达式(CTE)使用WITH子句创建临时结果集,提高复杂查询的可读性:`WITH high_earners AS (SELECT FROM employees WHERE salary > 100000) SELECT FROM high_earners ORDER BY salary DESC;`。
窗口函数: 高级数据分析
窗口函数在不减少行数的情况下执行计算,适用于排名、移动平均等分析。OVER()子句定义窗口范围。ROW_NUMBER(), RANK(), DENSE_RANK()用于排名,如`SELECT name, salary, RANK() OVER (ORDER BY salary DESC) as rank FROM employees;`。聚合窗口函数如`SUM(sales) OVER (PARTITION BY region ORDER BY month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)`计算区域销售的移动总和。
性能优化与最佳实践
为提升查询性能,应在WHERE和JOIN条件涉及的列上创建索引。避免SELECT 而明确指定所需列。使用EXPLAIN分析查询执行计划。对于复杂查询,合理使用临时表或CTE。注意处理NULL值(使用COALESCE或IS NULL)和数据类型的隐式转换。定期分析表统计信息以确保查询优化器做出最佳决策。
SQL核心语法与高级应用指南
334

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



