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;

结果:

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

相关推荐
毕设十刻几秒前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
wanhengidc7 分钟前
云手机的基本原理
运维·服务器·游戏·智能手机·云计算
✎ ﹏梦醒͜ღ҉繁华落℘16 分钟前
FreeRTOS学习笔记(应用)-- 各种 信号量的应用场景
笔记·学习
篙芷19 分钟前
两台服务器 NFS 共享目录实战
运维·服务器
星星火柴93621 分钟前
笔记 | C++面向对象高级开发
开发语言·c++·笔记·学习
BeingACoder30 分钟前
【SAA】SpringAI Alibaba学习笔记(一):SSE与WS的区别以及如何注入多个AI模型
java·笔记·学习·saa·springai
Hard but lovely1 小时前
linux: centos 软件包管理 yum源
linux·运维·centos
liliangcsdn1 小时前
如何利用约束提示优化LLM在问题转sql的一致性
数据库·sql
悲伤小伞1 小时前
Linux_Socket_UDP
linux·服务器·网络·c++·网络协议·udp
2301_816073831 小时前
Chrony服务器
运维·服务器