MYSQL之增删改查(下)

前言:

以下是MySQL最基本的增删改查语句,很多IT工作者都必须要会的命令,也 是IT行业面试最常考的知识点,由于是入门级基础命令,所有所有操作都建立在单表 上,未涉及多表操作。

4.3 高级查询

4.3.1 聚合函数

(1)COUNT()函数:统计记录的条数
语法:SELECT COUNT(*) FROM 表名
举例:查询student2表中一共有多少条记录
命令:SELECT COUNT(*) FROM student2;

结果:

(2)SUM()函数:求出表中某个字段所有值的总和
语法:SELECT SUM(字段名) FROM 表名;
举例:求出student2表中grade字段的总和
命令:SELECT SUM(grade) FROM student2;

结果:

(3)AVG()函数:求出表中某个字段所有值的平均值
语法:SELECT AVG(字段名) FROM 表名;
举例:求出student2表中grade字段的平均值
命令:SELECT AVG(grade) FROM student2;

结果:

(4)MAX()函数:求出表中某个字段所有值的最大值
语法:SELECT MAX(字段名) FROM 表名;
举例:求出student2表中所有人grade字段的最大值
命令:SELECT MAX(grade) FROM student2;

结果:

(5)MIN()函数:求出表中某个字段所有值的最小值
语法:SELECT MIN(字段名) FROM 表名;
举例:求出student2表中所有人grade字段的最小值
命令:SELECT MIN(grade) FROM student2;

结果:

.

4.3.2 对查询结果进行排序

语法:SELECT 字段名1,字段名2,...
      FROM 表名
      ORDER BY 字段名1 [ ASC | DESC ],字段名2 [ ASC | DESC ]...

在该语法中指定的字段名是对查询结果进行排序的依据,ASC表示升序排列,DESC 表示降序排 列,默认情况是升序排列。

举例1:查出student2表中的所有记录,并按照grade字段进行升序排序
命令:SELECT * FROM student2
      ORDER BY grade;

结果:

举例2:查出student2表中的所有记录,并按照grade字段进行降序排序
命令:SELECT * FROM student2
      ORDER BY grade DESC;

结果:

4.3.3 分组查询

在对表中数据进行统计的时候,可以使用GROUP BY 按某个字段或者多个字段进行分组,字段中 值相同的为一组,如男生分为一组,女生分为一组。

语法:SELECT 字段名1,字段名2,...
      FROM 表名
      GROUP BY 字段名1,字段名2,... [ HAVING 条件表达式 ];
(1)单独使用 GROUP BY 进行分组

单独使用GROUP BY 关键字,查询的是每个分组中的一条记录

举例:查询student2表中的数据,按照gender字段进行分组。
命令:SELECT * FROM student2 GROUP BY gender;

结果:

注意:

若在此2例中键入命令之后出现"#1055"错误,无法完成分组查询,是由于MySQL版本升 级到了5.7,可自行百度"MySQL 1055错误"参考解决办法。

(2) GROUP BY 和聚合函数一起使用

GROUP BY 和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中的最大值、最小 值、平均值等。

举例:将student2表按照gender字段进行分组查询,计算出每组共有多少个人。
命令:SELECT COUNT(*) ,gender FROM student2 GROUP BY gender;

结果:

(3) GROUP BY 和 HAVING 关键字一起使用

HAVING关键字和WHERE关键字的作用相同,区别在于HAVING 关键字可以跟聚合函数,而 WHERE 关键字不能。通常HAVING 关键字都和GROUP BY一起使用,用于对分组后的结果进行 过滤。

举例:将student2表按照gender字段进行分组查询,查询出grade字段值之和小于300的分组
命令:SELECT sum(grade),gender FROM student2 GROUP BY gender HAVING SUM(grade) < 300;

结果:

4.3.4 使用 LIMIT 限制查询结果的数量

语法:SELECT 字段名2,字段名2,...
      FROM 表名
     LIMIT [ OFFSET ,] 记录数

在此语法中,LIMIT 后面可以跟两个参数,第一个参数" OFFSET "表示偏移量,如果偏移量为 0,则从查询结果的第一条记录开始,偏移量为1则从查询结果中的第二条记录开始,以此类推。 OFFSET为可选值,默认值为0,第二个参数"记录数"表示指定返回查询记录的条数。

举例1:查询student2表中的前四条记录。
命令:SELECT * FROM student LIMIT 4;

结果:

举例2:查询student2表中grade字段从第五位到第八位的人(从高到低)
命令:SELECT * FROM student2 ORDER BY grade DESC LIMIT 4,4;

结果:

4.3.5 函数(列表)

见:

MySOL之常用函数

4.4 为表和字段取别名

4.4.1 为表取别名

在进行查询操作时,如果表名很长使用起来不方便,可以为表取一个别名来代替 表的名称。

语法:SELECT * FROM 表名 [ AS ] 别名;
举例:为student2表起一个别名s,并查询student2表中gender字段值为"女"的记录
命令:SELECT * FROM student2 AS s WHERE s.gender='女';结果:

结果:

4.4.2 为字段取别名

语法:SELECT 字段名 [ AS ] 别名 [ ,字段名 [AS] 别名,...] FROM 表名 ;
举例:查询student2表中的所有记录的name和gender字段值,并未这两个字段起别名stu_name和stu_gender
命令:SELECT name AS stu_name,gender AS stu_gender FROM student2;

结果:

----------------------------------------完结----------------------------------------

相关推荐
小宇成长录3 分钟前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
①个程序员19 分钟前
thinkphp 学习记录
学习
叶北辰CHINA27 分钟前
nginx反向代理,负载均衡,HTTP配置简述(说人话)
linux·运维·nginx·http·云原生·https·负载均衡
不惑_44 分钟前
在 Ubuntu 安装 Python3.7(没有弯路)
linux·运维·ubuntu
团儿.1 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构
alfiy1 小时前
Elasticsearch学习笔记(四) Elasticsearch集群安全配置一
笔记·学习·elasticsearch
向上的车轮1 小时前
Django学习笔记十一:部署程序
笔记·学习·django
程序猿小D1 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
不灭锦鲤2 小时前
ssrf学习(ctfhub靶场)
网络·学习·安全
alfiy2 小时前
Elasticsearch学习笔记(五)Elastic stack安全配置二
笔记·学习·elasticsearch