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;

结果:

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

相关推荐
pk_xz12345642 分钟前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强1 小时前
Linux之sed命令详解
linux·运维·服务器
瓜牛_gn1 小时前
mysql特性
数据库·mysql
海绵波波1071 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
奶糖趣多多2 小时前
Redis知识点
数据库·redis·缓存
九河云3 小时前
AWS账号注册费用详解:新用户是否需要付费?
服务器·云计算·aws
Lary_Rock3 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
CoderIsArt3 小时前
Redis的三种模式:主从模式,哨兵与集群模式
数据库·redis·缓存
幺零九零零4 小时前
【计算机网络】TCP协议面试常考(一)
服务器·tcp/ip·计算机网络