MySQL中常见关键字的用法总结

 更新时间:2023年09月15日 08:16:16   作者:小威要向诸佬学习呀  
这篇文章主要为大家详细介绍了MySQL中常见关键字的用法,例如GROUP BY、ORDER BY和LIMIT,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下

GROUP BY用法

在MySQL中,GROUP BY语句用于将结果集按照一个或多个列进行分组。它常与聚合函数(如SUM、COUNT、AVG等)一起使用,对分组后的数据进行汇总计算。

GROUP BY语句具体怎么用呢,接下来详细说明:

基本语法:

SELECT 列1, 列2, ..., 聚合函数
FROM 表名
GROUP BY 列1, 列2, ...
在GROUP BY子句中列出了要分组的列。查询结果将根据这些列的值进行分组。

聚合函数是什么,怎么用?

可以在SELECT语句中使用各种聚合函数来计算分组后的结果,例如SUM、COUNT、AVG、MAX、MIN等。在GROUP BY语句中,聚合函数通常用于计算每个分组的值

  • 过滤分组: 我们可以在GROUP BY语句之前使用HAVING子句进行分组后的结果过滤。HAVING子句类似于WHERE子句,但它用于过滤分组后的数据
  • 排序分组: 可以在GROUP BY语句之后使用ORDER BY子句对分组后的结果进行排序。我们可以根据列名指定排序顺序以及使用ASC(升序)或DESC(降序)关键字。
  • 多列分组: GROUP BY语句可以根据一个或多个列进行分组。列出的列将成为分组的依据,组合形成唯一的分组键。例如:

SELECT 列1, 列2, ..., 聚合函数
FROM 表名
GROUP BY 列1, 列2, ...

在使用GROUP BY时,我们需要注意的是:

SELECT语句中的列必须是GROUP BY子句中列出的列或聚合函数。

如果列中包含非聚合列且未在GROUP BY子句中列出,MySQL会根据该列进行隐式分组,但结果可能不符合预期。

GROUP BY子句中可以使用列的别名,而SELECT子句中不能使用。

我们使用一个小例子,演示如何使用GROUP BY语句:

SELECT department, COUNT(*) as total_employees, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING avg_salary > 5000
ORDER BY total_employees DESC;

以上小栗子中,我们按照部门分组员工信息,计算每个部门的员工总数和平均薪资,并过滤出平均薪资超过5000的部门,并按照员工总数降序排序。

ORDER BY用法

MySQL中,ORDER BY子句用于对查询结果进行排序。它可以按照一个或多个列进行升序(ASC)或降序(DESC)排序。

下面讲解一下ORDER BY子句的详细用法说明:

首先介绍下其基本语法:

SELECT 列1, 列2, ...
FROM 表名
ORDER BY 列1 [ASC|DESC], 列2 [ASC|DESC]

在ORDER BY子句中,我们可以使用一个或多个列作为排序依据,并为每个列指定排序顺序,ASC为升序(默认),DESC为降序。

单列排序: 如果只需要按照单个列进行排序,可以直接指定列名并选择排序顺序。

举个栗子:

SELECT 列1, 列2, ...
FROM 表名
ORDER BY 列1 DESC;

上面是,根据列1的值进行降序排序。

多列排序: 如果需要按照多个列进行排序,可以在ORDER BY子句中指定多个列,并为每个列选择排序顺序。

例如:

SELECT 列1, 列2, ...
FROM 表名
ORDER BY 列1 DESC, 列2 ASC;

上面是,首先根据列1的值进行降序排序,如果出现相同的值,则根据列2的值进行升序排序。

排序NULL值: 可以使用NULLS FIRSTNULLS LAST关键字指定空值在排序中的位置。NULLS FIRST表示空值排在前面,NULLS LAST表示空值排在后面。

例如:

SELECT 列1, 列2, ...
FROM 表名
ORDER BY 列1 NULLS LAST;

上面上,空值将排在列1的排序结果的最后。

我们在使用ORDER BY关键字时需要注意,在ORDER BY子句中可以使用列的别名,但不能使用SELECT子句中的表达式或聚合函数

通过一个栗子,为大家演示如何使用ORDER BY子句:

SELECT name, age, salary
FROM employees
ORDER BY salary DESC, age ASC;

上面上,我们按照薪资降序排序,并且对于相同薪资的员工,按照年龄升序排序。

因此,ORDER BY子句在MySQL中用于对查询结果进行排序。我们可以指定一个或多个列,并选择排序顺序。

LIMIT关键字用法

MySQL中,LIMIT关键字用于限制查询结果的返回行数。它可以帮助我们分页显示结果,或者仅返回某个范围内的行。

下面是LIMIT关键字的详细用法说明:

首先还是先介绍基本语法:

SELECT 列1, 列2, ...
FROM 表名
LIMIT 行数;

LIMIT子句会限制查询结果返回的行数。我们可以指定要返回的行数,例如10表示返回前10行。

分页查询: 在实际应用中,常常需要进行分页查询,只返回指定页码的结果。在LIMIT子句中,可以指定两个参数,第一个参数为起始位置(偏移量),第二个参数为返回的行数

举个栗子:

SELECT 列1, 列2, ...
FROM 表名
LIMIT 偏移量, 行数;

偏移量表示从查询结果的哪一行开始返回结果,行数表示返回的行数。

偏移量的计算公式为:(页码 - 1) * 每页行数

例如,如果每页显示10行数据,要查询第3页的数据,则偏移量为 (3-1)*10 = 20,表示从结果的第21行开始返回。

可选的简化写法: LIMIT子句还有一种简化写法,只指定要返回的行数,而不指定偏移量。

举个栗子:

SELECT 列1, 列2, ...
FROM 表名
LIMIT 行数 OFFSET 偏移量;

这种写法和第一种情况是等价的。

限制查询结果: LIMIT子句也可以用于限制查询结果的返回范围。比如,我们可以指定返回前10条记录中的第5到第8行。

举个栗子:

SELECT 列1, 列2, ...
FROM 表名
LIMIT 4, 8;

上面小栗子,返回结果将从第5行开始,返回8行数据。

因此我们需要注意的是,在使用LIMIT子句时,偏移量和行数都应该是非负整数。

到此这篇关于MySQL中常见关键字的用法总结的文章就介绍到这了,更多相关MySQL关键字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中索引的定义以及操作新手教程

    MySQL中索引的定义以及操作新手教程

    索引是对数据库表中一列或多列的值进行排序的一种结构,在关系数据库中,索引是一种与表有关的数据库结构,下面这篇文章主要给大家介绍了关于MySQL中索引的定义以及操作的相关资料,需要的朋友可以参考下
    2022-08-08
  • MySQL 搭建MHA架构部署的步骤

    MySQL 搭建MHA架构部署的步骤

    这篇文章主要介绍了MySQL 搭建MHA架构部署的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • 在C#和MySQL中存取中文字符时避免乱码的方法

    在C#和MySQL中存取中文字符时避免乱码的方法

    这篇文章主要介绍了在C#和MySQL中存取中文字符时避免乱码的方法,主要还是老办法先转换成Unicode编码,需要的朋友可以参考下
    2015-05-05
  • MySQL的事务的基本要素和事务隔离级别详解

    MySQL的事务的基本要素和事务隔离级别详解

    这篇文章主要介绍了MySQL的事务的基本要素和事务隔离级别,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • CentOS安装MySQL5.5的完整步骤

    CentOS安装MySQL5.5的完整步骤

    MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面MySQL是最合适的数据库,这篇文章主要给大家介绍了关于CentOS安装MySQL5.5的相关资料,需要的朋友可以参考下
    2021-11-11
  • MYSQL 性能分析器 EXPLAIN 用法实例分析

    MYSQL 性能分析器 EXPLAIN 用法实例分析

    这篇文章主要介绍了MYSQL 性能分析器 EXPLAIN 用法,结合实例形式分析了MYSQL 性能分析器 EXPLAIN 基本功能、使用方法及操作注意事项,需要的朋友可以参考下
    2020-05-05
  • 一次Mysql使用IN大数据量的优化记录

    一次Mysql使用IN大数据量的优化记录

    这篇文章主要给大家介绍了关于Mysql使用IN大数据量的优化的实战记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • MySQL中聚簇索引与非聚簇索引的实现

    MySQL中聚簇索引与非聚簇索引的实现

    MySQL数据库中,聚簇索引和非聚簇索引是提高查询效率的关键,聚簇索引决定数据的物理存储顺序,通常由主键或UNIQUE索引构成,非聚簇索引则通过指针定位数据行,适合访问数据子集,下面就来具体介绍一下,感兴趣的可以了解一下
    2024-09-09
  • Mysql如何在linux中实现定时备份

    Mysql如何在linux中实现定时备份

    这篇文章主要介绍了Mysql如何在linux中实现定时备份,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • mysql could not be resolved: Name or service not known

    mysql could not be resolved: Name or service not known

    今天查看mysql日志的时候发现[Warning] IP address '10.0.0.220' could not be resolved: Name or service not known,原来是mysql DNS反解:skip-name-resolve的原因,屏蔽一下就可以了
    2015-08-08

最新评论