–MySQL条件查询语句:
–比较运算符
–select …from 表名 where …
– > 查询大于18岁的信息
-- < 查询小于18岁
-- <= / >= / != / =
– 逻辑运算符
--and 逻辑与
-- select * from students where age>18 and age <28;
--or 逻辑或 select * from students where age<18 or age >28;
--not 逻辑非 select * from students where not age<18 ;
–模糊查询
–like
–%替换1个或者多个
–_替换1个
–查询姓名中 以“小”开头的名字select name from students where name like “小%”;
–查询姓名中 有“小”开头的名字select name from students where name like “%小%”;
--查询有2个字的名字
select name from students where name like "__";
--查询有2个字以及2个字以上的名字
select name from students where name like "__%";
--rlike
select name from students where name rlike "^周.*"; 以周开头的
–范围查询
–in
select name ,age from students where age in(18,12,34); 非连续
--not in
select name ,age from students where age not in(18,12,34);除过18,12,34的
--between ...and
select name ,age from students where age between 18 and 34; 连续的18-34;
--not between ...and
select name ,age from students where age not between 18 and 34; 除过18-34;
–空判断
– is null
select * from students where height is null;
– is not null
select * from students where height is not null;
–排序
–order by 字段
select * from students where (age between 18 and 40) and gender = 1 order age asc; (默认从小到大排序,有相同值时按照主键排序)
select * from students where (age between 18 and 40) and gender = 1 order age desc,id desc; (默认从大到小排序,有相同的字段,按照id从大到小)
–聚合函数
--总数count
select count(*) as 男性人数 from students where gender =1;
--最大值max
select max(age) from students;
--最小值
select min(age) from students;
--求和
select sum(age) from students where gender =1;
--平均值
select avg(height) from students ; 相当于 select round(sum(age)/count(*),2) from students;
--四舍五入
select round(height,2)from students; --保留小数后两位
–分组(和聚合函数一起用)
--group by
select gender,count(*)from students group by gender;
select gender,max(age)from students group by gender; 计算每个性别中年龄最大的
--group_concat(name) --查询同种性别中的姓名
select gender,group_concat(name)from students group by gender; 显示每个组里面的详细信息
select gender,group_concat(name,"_",age)from students where gender =1 group by gender ;
--having
select gender,group_concat(name,"_",age)from students group by gender having avg(age)>30;
--where 和having 的区别: where是对原始表判断,having 是对结果进行判断。
--查询每组性别中人数大于两个的信息。
select gender group_concat(name) from students group by gender having count(*)>2;
–分页