mysql条件查询语句

–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;

–分页

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章