SQL 基础查询
SQL 查询简介
SQL(Structured Query Language,结构化查询语言)是一种用于管理关系数据库系统的声明性编程语言。SQL 查询是用于从数据库中检索、更新、插入或删除数据的语句。
基本结构
一个典型的 SQL 查询语句通常由以下部分组成:
- SELECT:指定要查询的字段。
- FROM:指定查询的表。
- WHERE:指定查询的条件,用于过滤数据。
- GROUP BY:对查询结果进行分组,通常与聚合函数一起使用。
- HAVING:对分组后的结果进行过滤。
- ORDER BY:对查询结果进行排序。
- LIMIT:限制查询结果的数量,常用于分页。
语法示例
SELECT 列1, 列2, ...
FROM 表名
WHERE 条件
GROUP BY 分组字段
HAVING 分组后条件
ORDER BY 排序字段 [ASC|DESC]
LIMIT 跳过的记录数, 返回的记录数;绍查询的完整语法;
完整的 SQL 查询示例
假设我们有一个名为 employees 的表,其结构如下:
表格
字段名 | 数据类型 |
id | INT |
name | VARCHAR(100) |
age | INT |
salary | DECIMAL(10, 2) |
department | VARCHAR(50) |
1. 查询所有字段
SELECT * FROM employees;
- 解释:查询 employees 表中的所有字段。
2. 查询特定字段
SELECT name, salary FROM employees;
- 解释:只查询 name 和 salary 字段。
3. 使用WHERE条件过滤数据
SELECT name, salary FROM employees WHERE age > 30;
- 解释:查询年龄大于 30 的员工的姓名和工资。
4. 使用GROUP BY进行分组
SELECT department, COUNT(*) AS num_employees FROM employees GROUP BY department;
- 解释:按部门分组,并计算每个部门的员工数量。
5. 使用HAVING过滤分组后的结果
SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;
- 解释:按部门分组,并筛选出员工数量大于 5 的部门。
6. 使用ORDER BY排序
SELECT name, salary FROM employees ORDER BY salary DESC;
- 解释:按工资降序排列员工的姓名和工资。
7. 使用LIMIT进行分页
SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 0, 10;
- 解释:按工资降序排列,返回第一页(每页 10 条记录)。
8. 结合多个条件
SELECT name, salary, department
FROM employees
WHERE age > 30
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY salary DESC
LIMIT 0, 10;
- 解释:
- 查询年龄大于 30 的员工。
- 按部门分组,并筛选出员工数量大于 5 的部门。
- 按工资降序排列。
- 返回第一页(每页 10 条记录)。
注意事项
- WHERE 和 HAVING 的区别:
- WHERE 用于过滤行,作用于原始数据。
- HAVING 用于过滤分组后的结果,通常与聚合函数一起使用。
- ORDER BY 的使用:
- 可以对多个字段排序,例如:
ORDER BY department ASC, salary DESC;
- LIMIT 的分页计算:
- 第一页:LIMIT 0, 10
- 第二页:LIMIT 10, 10
- 第三页:LIMIT 20, 10
- 以此类推。
- 字段别名:
- 可以为字段或表设置别名,使查询更简洁。例如:
SELECT name AS employee_name, salary AS employee_salary FROM employees AS e;
总结
通过这些具体的例子,你可以看到 SQL 查询语句的各个部分如何组合起来完成复杂的查询任务。掌握这些基本结构和用法后,你就可以根据实际需求灵活地编写 SQL 查询了。