02-数据库查询

条件查询:

    --比较运算符

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


 

 连接查询

    

 

posted on 2019-01-18 16:57  人与人之间的交流技巧——心  阅读(311)  评论(0编辑  收藏  举报

导航