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;

结果:

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

相关推荐
白云~️9 分钟前
uniappx 打包配置32位64位x86安装包
运维·服务器·github
王有品12 分钟前
Spring MVC 多个拦截器的执行顺序
数据库·spring·mvc
极小狐37 分钟前
如何使用极狐GitLab 的外部状态检查功能?
数据库·ci/cd·gitlab·devops·mcp
在河之洲木水1 小时前
现代多核调度器的本质 调度三重奏
linux·服务器·系统架构
Leo.yuan1 小时前
数据仓库建设全解析!
大数据·数据库·数据仓库·数据分析·spark
神经毒素1 小时前
WEB安全--社会工程--SET钓鱼网站
安全·web安全
闪电麦坤951 小时前
SQL:子查询(subqueries)
数据库·sql
活跃的煤矿打工人1 小时前
【星海出品】分布式存储数据库etcd
数据库·分布式·etcd
文牧之1 小时前
PostgreSQL的扩展 pgcrypto
运维·数据库·postgresql
白总Server1 小时前
多智能体系统的中间件架构
linux·运维·服务器·中间件·ribbon·架构·github