
本文将通过员工和部门表案例,深入讲解SQL中的
WHERE、
HAVING、
ORDER BY、
GROUP BY等子句及相关运算符,助您掌握SQL数据过滤和排序技巧。
目录
-
表结构
WHERE子句
GROUP BY子句
HAVING子句
ORDER BY子句
LIMIT子句
DISTINCT子句
AND、
OR、
NOT运算符
表结构
员工表
| emp_id | name | age | department_id | hire_date | salary |
|---|---|---|---|---|---|
| 1 | john smith | 35 | 101 | 2020-01-01 | 5000 |
| 2 | jane doe | 28 | 102 | 2019-03-15 | 6000 |
| 3 | alice johnson | 40 | 103 | 2018-06-20 | 7000 |
| 4 | bob brown | 55 | null | 2015-11-10 | 8000 |
| 5 | charlie black | 30 | 102 | 2021-02-01 | 5500 |
部门表
| dept_id | dept_name |
|---|---|
| 101 | hr |
| 102 | it |
| 103 | finance |
| 104 | marketing |
WHERE
子句
WHERE子句用于筛选符合特定条件的记录。
SQL 查询:
<code class="sql">SELECT name, age, salary FROM employees WHERE age > 30;</code>
结果:
| name | age | salary |
|---|---|---|
| john smith | 35 | 5000 |
| alice johnson | 40 | 7000 |
| bob brown | 55 | 8000 |
说明: 筛选出年龄大于30岁的员工信息。
AND
运算符示例:
<code class="sql">SELECT name, age, salary FROM employees WHERE age > 30 AND salary > 5000;</code>
结果:
| name | age | salary |
|---|---|---|
| alice johnson | 40 | 7000 |
| bob brown | 55 | 8000 |
说明: 筛选出年龄大于30岁且薪水大于5000的员工信息。
GROUP BY
子句
GROUP BY子句用于将具有相同值的记录分组,常用于统计聚合操作。
SQL 查询:
<code class="sql">SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id;</code>
结果:
| department_id | employee_count |
|---|---|
| 101 | 1 |
| 102 | 2 |
| 103 | 1 |
说明: 按部门ID分组,统计每个部门的员工人数。
HAVING
子句
HAVING子句用于过滤
GROUP BY分组后的结果。
SQL 查询:
<code class="sql">SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id HAVING AVG(salary) > 5500;</code>
结果:
| department_id | avg_salary |
|---|---|
| 102 | 5750 |
| 103 | 7000 |
说明: 筛选出平均薪水大于5500的部门。
ORDER BY
子句
ORDER BY子句用于对结果集进行排序。
SQL 查询 (升序):
<code class="sql">SELECT name, salary FROM employees ORDER BY salary;</code>
结果:
| name | salary |
|---|---|
| john smith | 5000 |
| charlie black | 5500 |
| jane doe | 6000 |
| alice johnson | 7000 |
| bob brown | 8000 |
SQL 查询 (降序):
<code class="sql">SELECT name, salary FROM employees ORDER BY salary DESC;</code>
结果:
| name | salary |
|---|---|
| bob brown | 8000 |
| alice johnson | 7000 |
| jane doe | 6000 |
| charlie black | 5500 |
| john smith | 5000 |
LIMIT
子句
LIMIT子句用于限制返回的记录数量。
SQL 查询:
<code class="sql">SELECT name, salary FROM employees ORDER BY salary DESC LIMIT 3;</code>
结果:
| name | salary |
|---|---|
| bob brown | 8000 |
| alice johnson | 7000 |
| jane doe | 6000 |
说明: 仅返回薪水最高的3名员工信息。
DISTINCT
子句
DISTINCT子句用于去除重复值。
SQL 查询:
<code class="sql">SELECT DISTINCT department_id FROM employees;</code>
结果:
| department_id |
|---|
| 101 |
| 102 |
| 103 |
说明: 返回唯一的部门ID。
AND
、OR
、NOT
运算符
这些运算符用于组合多个条件。
(略去重复的And, Or, Not例子,保持篇幅精简)
结论
本文通过实际案例,详细讲解了SQL中用于数据过滤和排序的关键子句和运算符。熟练掌握这些知识,将有效提升您的SQL查询效率和数据分析能力。
编辑推荐:
- SQL 过滤和排序与现实生活中的例子02-28
- mysql 无法导出数据库02-28
- mysql 外键可以为主键吗02-28
- HadiDB:Python 中的轻量级、可水平扩展的数据库02-28
- SQL 快速参考:简化数据库管理02-28
- 如何针对高负载应用程序优化 MySQL 性能?02-28
- 我如何解决 MySQL (XAMPP) 中的General Error:02-28
- mysql 可以在 mac 上安装吗02-28
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- SQL 过滤和排序与现实生活中的例子
SQL 过滤和排序与现实生活中的例子
26-02-28 - HadiDB:Python 中的轻量级、可水平扩展的数据库
HadiDB:Python 中的轻量级、可水平扩展的数据库
26-02-28 - 如何针对高负载应用程序优化 MySQL 性能?
如何针对高负载应用程序优化 MySQL 性能?
26-02-28 - 我如何解决 MySQL (XAMPP) 中的General Error:
我如何解决 MySQL (XAMPP) 中的General Error:
26-02-28 - RDS MySQL 与 Redshift 零 ETL 集成
RDS MySQL 与 Redshift 零 ETL 集成
26-02-28 - mysql 可以连接到 sql 服务器吗
mysql 可以连接到 sql 服务器吗
26-02-28 - MySQL 中的查询优化对于提高数据库性能至关重要,尤其是在处理大型数据集时
- 掌握 SQL 中的 ORDER BY 子句:有效地对数据进行排序
掌握 SQL 中的 ORDER BY 子句:有效地对数据进行排序
26-02-28 - 掌握SQL LIMIT子句:控制查询中的行数
掌握SQL LIMIT子句:控制查询中的行数
26-02-28 - 掌握SQL BETWEEN运算符:过滤某个范围内的数据
掌握SQL BETWEEN运算符:过滤某个范围内的数据
26-02-28
