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


     连接查询

        

  • 相关阅读:
    P1396 营救
    [BUUCTF]REVERSE——xor
    [BUUCTF]REVERSE——helloword
    [BUUCTF]REVERSE——[BJDCTF 2nd]guessgame
    [BUUCTF]REVERSE——新年快乐
    [BUUCTF]PWN——jarvisoj_level3
    [BUUCTF]PWN——[BJDCTF 2nd]test
    [BUUCTF]PWN——ciscn_2019_es_2
    [BUUCTF]PWN——[Black Watch 入群题]PWN
    [BUUCTF]PWN——others_shellcode
  • 原文地址:https://www.cnblogs.com/latecomer/p/10282270.html
Copyright © 2020-2023  润新知