前言:

本文内容:聚合函数及分组过滤、拓展数据库级别的MD5加密、Select小结

推荐免费MySQL基础讲解视频:【狂神说Java】MySQL最新教程通俗易懂_哔哩哔哩_bilibili

聚合函数及分组过滤

聚合函数

函数名称 描述
count() 计数
sum() 求和
avg() 平均值
max() 最大值
min() 最小值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 聚合函数
-- count() 统计表中的数据
select count(`name`) from student; -- count(指定列) 会忽略null值
select count(*) from student; -- count(*) 不会忽略null值
select count(1) from student; -- count(1) 会忽略null值

-- sum() 总和
select sum(`id`) as ID总和 from student;
-- avg() 平均值
select avg(`id`) as ID平均值 from student;
-- max() 最大值
select max(`id`) as ID最大值 from student;
-- min() 最小值
select min(`id`) as ID最小值 from student;

分组过滤

1
2
3
4
5
6
-- 一般查询不同学生的ID平均值,最高值,最低值
-- 需要根据名字不同进行分组
select `name` as 姓名,avg(`id`) as 平均值,max(`id`) as 最高值,min(`id`) as 最低值,gradename as 年级
from student s inner join grade g
on s.gradeid=g.gradeid
group by s.`name`; -- 分组

拓展数据库级别的MD5加密

什么是MD5

主要增强算法复杂度和不可逆性

MD5破解网站的原理,背后有一个字典,进行比对;稍微复杂且在他字典中没有的字符就无法达到所谓破解;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-- MD5加密
--创建一个测试表
create table `testmd5`(
`id` int(4) not null,
`name` varchar(20) not null,
`pwd` varchar(50) not null,
primary key(`id`)
)engine=innodb default charset=utf8;
-- 插入值
insert into testmd5 values(1,'张三','123456'),(2,'李四','abc123'),(3,'王五','abc321');
-- md5加密 指定行
update testmd5 set pwd=md5(pwd) where `id`=1;
-- md5加密所有
update testmd5 set pwd=md5(pwd);
-- 插入值的时候加密
insert into testmd5 values(4,'赵六',md5('123123'));
-- 查询
select * from testmd5;
-- 通过名称和密码查询指定的值
select * from testmd5 where `name`='张三' and `pwd`=md5('123456');

Select小结

SELECT 的语法格式:

1
SELECT{* | <字段列名>}[FROM <1>, <2>…[WHERE <表达式>[GROUP BY <group by definition>[HAVING <expression> [{<operator> <expression>}…]][ORDER BY <order by definition>][LIMIT[<offset>,] <row count>]]

小结

  • select 去重 (表和字段可取别名)
  • join 要链接的表 on 等值判断
  • where(具体的值,子查询语句)
  • group by 分组
  • having 过滤分组后的信息,条件和where一样,位置不同
  • order by 排序 (升序asc/降序desc)
  • limit startindex pageSize…