目录
一、常用聚合函数
都具备空数据过滤功能
avg()--平均值,具备空数据过滤功能 avg(c_inprice)
count(*) ---计数 count(*)统计所有的数据,count(field)会排除空数据
max() min() sum() 聚合函数一般可用在select后
select avg(c_inprice),count(c_inprice),max(c_inprice),
min(c_inprice),sum(c_inprice) from commodity;
用count解决可能产生的空指针异常问题。如果用户名和密码不对应,返回0而不是返回null
select count(*) from user where name='' and pwd='';
二、分组查询--group by
单纯用group by作用和distinct一致,仅去除了重复项,但意义不一致
select c_type from commodity group by c_type;
select distinct from commodity;
分组最常用的是和聚合函数配合
#求出每种商品中的最高进价
select c_type,max(c_inprice) from commodity group by c_type;
#每种商品最大的库存有多少,一共有多少库存,售价最便宜的是多少,进价最贵的是多少
select max(c_num),sum(c_num),min(c_outprice),max(c_inprice) from commodity
group by c_type;
where是对原字段进行筛选,having是对分组后的计算结果字段进行筛选;where在group by前,having在group by后。
#进价超过1000的商品种类
select c_type,max(c_inprice) from commodity
group by c_type
having max(c_inprice)>1000;
先where后group by
先group by后having
先group by后order by
整理
select ... from ...
select distinct ... from ...
select ... from ... where ① and or not > < >= <= =
② between A and B
③ field is not null
④ field not in (A,B,C,...)
⑤ field like '%a%'
select ... from ... where ... order by ... limit N
select ... from ... group by ...
select ... from ... group by ... having ...
where优于having
select c_name,concat('《',c_name,'》') from commodity where c_type=3;
select c_name from commodity where c_name like concat('%','玩具','%');
三、字符串拼接-concat()
简单拼接字符串
select concat('hello',' world','!');
加书名号,concat直接用用在select后
select c_name,concat('《',c_name,'》') from commodity where c_type=3;
拼接句子
select c_name,c_madein,concat(c_name,'的产地是',c_madein) from commodity;
用concat实现模糊查询,和where like一起使用;使用在where后
#找到含有"玩具"二字的c_name
select c_name from commodity where c_name like concat('%','玩具','%');
select c_name from commodity where c_name like '%玩具%';
四、常见数据处理函数
1.文本处理
①left('',n)返回字符串左边的字符
select left('jack',2);
②right('',n)返回字符串右边的字符
select right('jack',1);
③length('')返回字符串的长度
select length('jack');
④ltrim(' ')去除字符串左边的空格
select ltrim(' rose ');
⑤rtrim(' ')去除字符串右边的空格
select rtrim(' rose ');
⑥lower('')将所有的英文字母变成小写
select lower('ABC');
⑦upper('')将所有的小写字母变成大写
select upper('ac');
2.日期处理
now()--返回当前系统实践
select now();
year()、month()、day()、hour()、minute()、second()返回日期张的年、月、日、时、分、秒
select year(now());
select month(now());
3.数值处理
返回绝对值--abs() 返回余弦--cos() 返回余数--mod() 返回圆周率--pi() 返回一个0-1之间,左闭右开的随机数
select abs(-20);
select cos(30);
select mod(9,4);
select pi();
select rand();