条件查询:
--比较运算符
--select ...from 表名 where....
-- >
--查询大于18岁的信息
--select * from students where age>18;
--<
--查询小于18 岁的信息
select * from students where age<18
--<=
--查询小于或者等于18岁的信息
--=
查询年龄为18岁的所有学生名字
-- != 或者 <>
不等于
--逻辑运算符
--and
-- 18到28之间的所有学生
--select * from students where age>18 and age<28;
--18岁以上 的女性
select * from students where age>18 and gender="女";
--or
--18岁以上的或者身高过180(包含)以上
select * from students where age>18 or height >180;
--not
--不在 18岁以上的女性 这个范围内的信息
select * from students where not (age>18 and gender="女");
--年龄不小于或者等于18 并且是女性
--select * from students where not age<-18 and gender =2;
--模糊查询
--like
--代替一个或多个
--查询姓名中 以“小”开始的名字
select name from students where name="小"'
select name from students where name like "小%"
--查询姓名中,有“小”的所有名字
select name from students where name like "%小%"
--查询有两个字的名字
select name from students where name like ''__";--两个下划线
--查询有三个字的名字
select name from students where name like ''___";--三个下划线
--查询至少有两个字的名字
select name from students where name like ''__%";
--rlike 正则
--查询以周开头的名字
select name from students where name rlike "^周.*";
--查询以周开头,伦结尾的名字
select name from students where name rlike "^周.*伦$";
--复习正则表达式
--范围查询
--in(1,3,8)表示在一个非连续的范围内
--查询 年龄为18,34 的姓名
select name,age from students where age=18 or age=34;
select name,age from students where age=18 or age=34 or age=12;
--上一句麻烦 ? 可以试一试下面这一句
select name,age from students where age in (12,18,34);
--not in 不非连续的范围之内
--年龄不是18,34岁之间的信息
select name,age from students where age not in (12,18,34)
between ... and ...表示在一个连续的范围内
--查询 年龄在18到34之间的信息
select name,age from students where age between 18 and 34;
not between ...and ...表示不在一个连续的范围内
查询年龄不在18到34之间的值
select * from students where age not between 18 and 34;
--空判断
判空is null
查询身高为空的信息
判非空 is not null
排序
--order by 字段
--asc从小到大排列,即升序
--desc从大到小排列,即降序
--查询年龄在18到34岁之间的男性,按照年龄从小到大排序
select * from students where (age between 18 and 34) and gender=1;
select * from students where (age between 18 and 34) and gender=2 order by age;
select * from students where (age between 18 and 34) and gender=1 order by age asc;
--查询年龄在18 到34 岁之间的女性,身高从高到矮排序
select * from students where (age between 18 and 34) and gender=2 order by height desc ;
--order by 多个字段
--查询年龄在18岁到34岁之间 的女性,身高从高到矮排序,如果身高相同的情况下按照年龄从小到大排序
select * from students where (age between 18 and 34) and gender=2 order by height desc,age asc;
--查询年龄在18到34岁之间的女性,身高从高到矮排序,如果身高相同的情况下按照年龄从小到大排序
--如果年龄也相同那么按照id从大到小排序
select * from students where (age between 18 and 34) and gender=2 order by height desc,age asc,id desc;
--按照年龄从小到大,身高从高到矮的排序
select * from students order by age asc,height desc;
聚合、分组
一、 聚合函数
--查询男性有多少人,女性有多少人
select * from students where gender=1;
select count(*) from students where gender=1;
select count(*) as 男性人数 from students where gender=1;
select count(*) as 女性人数 from students where gender=2;
--最大值
--max
--查询最大的年龄
select max(age) from students;
--查询女性的最高身高
select max(height) from students where gender=2;
--最小值
--min
--求和
--sum
--计算所有人的年龄总和
select sum(age) from students;
--平均值
--avg
--计算平均年龄
select avg(age) from students;
--计算平均年龄2
select sum(age)/count(*) from students;
四舍五入 round()保留1位小数
--计算所有人的平均年龄、保留2位数
select round(sum(age)/count(*),2)
--计算男性的平均身高 保留2位小数
select round(avg(height),2) from students where gender=1;
二、分组
--group by
--按照性别分组,查询所有性别
select name from students group by gender;失败的
select * from students group bygender;
select gender from studenrs group by gender;
--失败 select * from students group by gender;
--计算每种性别中的人数
select gender,count(*) from students group by gender;
--计算男性的人数
select gender,count(*) from students where gender=1 group by gender;
--group_concat(...)
查询同种性别中的姓名
select gender,group_concat(name) from students where gender=1 group by gender;
select gender ,group_concat(name,age,id) from students where gender=1 group by gender;
select gender ,group_concat(name,"_",age," ",id) from students where gender=1 group by gender;
--having
查询平均年龄超过30岁的性别 , 以及姓名 having avg(age)>30
select gender,group_concat(name),avg(age) from students group by gender having avg(age)>30;
--查询每种性别中的人数多于2个的信息?
select gender,group_concat(name) from students group by gender having count(*)>2;
分页
--limit start,count
--限制查询出来的数据个数
select * from students where gender=1 limit 2;
--查询前5个数据
select * from students limit 0,5;
查询id6-10(包含)的书序
selecr * from students limit 5,5;
--每页显示2个,第一页面
select * from students limit 0,2;
--每页显示2个,第2个页面
select * from students limit 2,2;
每页显示2个,第三个页面
select * from students limit 4,2;
每页显示2个,第四个页面
select * from students limit 6,2;-------------->公式 limit (第N页-1)*每页的个数,每页的个数
每页显示2个,显示第6页的信息,按照年龄从小到大排序
select * from students group by age asc limit 5*2,2;
--失败select * from students limit 2*(6-1),2;
--失败select * from students limit 10,2 order by age asc;
连接查询