大白话聊聊MySQL查询之五子句(知识简单但重要)

前言:

在日常开发中,查询数据占很大的比重,在使用 MySQL 数据库进行查询时,我们经常需要通过各种条件和规则来筛选和排序数据。要实现这些功能,就不得不使用以下这些子句:WHERE、ORDER BY、GROUP BY、HAVING 和 LIMIT。那,接下来,我就用简单易懂的语言详细介绍这些子句的作用和用法。

1. WHERE 子句

作用: WHERE 子句用于筛选数据,只返回满足特定条件的记录。就像你只挑选自己喜欢的东西一样,WHERE 帮助你从数据中挑选出你需要的部分。

示例:
假设我们有一个员工表 employees,其中包含员工的姓名、年龄、部门等信息。如果我们只想找出年龄大于 30 岁的员工,可以这样写查询语句:

SELECT * FROM employees
WHERE age > 30;

这个查询语句的意思是:从 employees 表中选择所有列(即 *),但只返回年龄大于 30 的记录。

2. ORDER BY 子句

作用: ORDER BY 子句用于对结果进行排序。就像你整理书籍时按字母顺序排列一样,ORDER BY 可以让你按指定的列进行升序或降序排序。

示例:
如果我们想按员工的姓氏升序排列,并且在姓氏相同时按名字降序排列,可以这样写查询语句:

SELECT * FROM employees
ORDER BY last_name ASC, first_name DESC;

这个查询语句的意思是:先按姓氏(last_name)升序排列(ASC),如果有相同的姓氏,再按名字(first_name)降序排列(DESC)。

3. GROUP BY 子句

作用: GROUP BY 子句用于将数据按一个或多个列进行分组。想象一下,你在整理一个大型活动的报名信息,可以按部门或城市进行分组统计。

示例:
如果我们想按部门统计每个部门的员工数量,可以这样写查询语句:

SELECT department, COUNT(*)
FROM employees
GROUP BY department;

这个查询语句的意思是:按部门(department)分组,并统计每个部门的员工数量(COUNT(*))。

4. HAVING 子句

作用: HAVING 子句用于过滤分组后的结果。它有点像 WHERE 子句,但它是用来处理聚合函数的结果。

示例:
如果我们只想找出员工数超过 10 的部门,可以这样写查询语句:

SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;

这个查询语句的意思是:先按部门分组,再计算每个部门的员工数,最后只返回员工数大于 10 的部门。

5. LIMIT 子句

作用: LIMIT 子句用于限制返回的记录数量。就像你只想从一个长长的购物清单中挑出前 5 个最需要的物品一样,LIMIT 可以让你只取出前几条记录。

示例:
如果我们只想查看前 5 条员工记录,可以这样写查询语句:

SELECT * FROM employees
LIMIT 5;

这个查询语句的意思是:从 employees 表中选择所有列,但只返回前 5 条记录。

综合示例

我们可以把上述这些子句组合在一起使用。假设我们需要找出年龄大于 30 岁、员工数超过 10 的部门,并按员工数降序排列,最后只显示前三个部门,可以这样写查询语句:

SELECT department, COUNT(*) as employee_count
FROM employees
WHERE age > 30
GROUP BY department
HAVING COUNT(*) > 10
ORDER BY employee_count DESC
LIMIT 3;

这个查询语句做了以下几件事:

  1. 使用 WHERE 子句筛选出年龄大于 30 岁的员工。
  2. 按部门进行分组。
  3. 计算每个部门的员工数,并过滤出员工数超过 10 的部门。
  4. 使用 ORDER BY 子句按员工数降序排列。
  5. 使用 LIMIT 子句只返回前 3 个部门。

通过这些子句的组合,我们可以灵活地从数据库中获取所需的数据,满足各种查询需求。希望这篇文章能帮助你更好地理解和使用 MySQL 的查询语句。

注意事项!!!!!!

SELECT department, COUNT(*) as employee_count
FROM employees
WHERE age > 30                 -- 1.WHERE 子句
GROUP BY department            -- 2.GROUP BY子句
HAVING COUNT(*) > 10           -- 3.HAVING 子句
ORDER BY employee_count DESC   -- 4.ORDER BY子句
LIMIT 3;                       -- 5.LIMIT 子句

在我们使用的过程中,
1~5子句的顺序不能颠倒!!!!!!!!!!!!!!
1~5子句的顺序不能颠倒!!!!!!!!!!!!!!
1~5子句的顺序不能颠倒!!!!!!!!!!!!!!
重要的事情说三遍

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书语时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值