查询(条件,比较,逻辑,模糊,范围,排序,聚合,分组,分页)

1、查询所有字段:select * from students;

2、查询指定字段:select name,sex,hometown from students;

3、字段起别名: select name as 姓名,sex as 性别,hometown as 家乡 from students

 

 4、消除重复行:select+distinct+字段名

查询性别这一列,是否有重复的数据:select distinct sex from students;

查询性别这一列,打印性别班级: select distinct sex,class from students;

 

 5、条件查询:

      语法:select 字段1,字段2......from 表名 where 条件

select * from students where studentNo='001';

 

 6、比较运算符:

 例:查询20岁以下的学生  select * from students where age<20;

 

7、逻辑运算符: and or not

例:查询年龄小于20的女学生  select * from students where age<20 and sex='女';

例:查询女同学或1班的学生 select * from students where sex='女' or class='1班';

 

8、模糊查询:like  

相当于是关键字查询

例:查询姓孙的学生 :select * from students where name like '孙%';

例:查询姓孙,且名字是一个字的学生 :select * from students where name like '孙_’;

例:查询叫乔的学生 :select * from students where name like '%乔';

例:查询姓名含白的学生 :select * from students where name like '%白%';

 

9、范围查询:

in 表示在一个非连续的范围内

例:查询家乡是北京或上海或广东的学生 :select * from students where hometown in('北京','上海','广东');

between...and... 表示在一个连续的范围内

例:查询年龄为18-20的学生 :select * from students where age between 18 and 20;

 

10、空判断:

    注意:null与 '' 是不同的

例:查询 没有 填写身份证的学生 :select * from students where card is null;

例:查询 填了 身份证的学生 :select * from students where card is not null;

 

11、sql查询-排序: order by 

              语法:select * from 表名 order by 列名

    asc 从小到大排序,升序:

      例:查询所有学生的信息,按年龄从小到大排序 :select * from students ordey by age asc;

    desc 从大到小排序,降序:

      例:查询所有学生的信息,按年龄从大到小排序 :select * from students ordey by age desc;

  例:查询所有学生信息,按年龄从大到小排序,年龄相同时,再按学号从小到大排序:

    select * from students order by age desc,studentNo asc

 

12、聚合函数:用来统计数据

count(*)   表示计算总行数 

    例:查询学生总数 :select count(*) from students; 

max(列)  表示求此列的最大值

    例:查询女生的最大年龄 :select max(age) from students where sex='女';

min(列)  表示求此列的最小值

    例:查询1班最小年龄 :select min(age) from student;

sum(列) 表示求此列的和

    例:查询北京学生的年龄总和 :select sum(age) from students where hometown='北京';

avg(列) 表示求此列的平均值

    例:查询女生的平均年龄 :select avg(age) from students where sex='女';

 

13、分组 :group by

按照字段分组,表示此字段相同的数据会被放到一个组中

    语法:select 列1,列2,聚合... from 表名 group by 列1,列2...

    例:查询各种性别的人数 :select sex,count(*) from students group by sex;

    

    例:查询各种年龄的人数 :select age,count(*) from students group by age;

    

 

 14、分组后的数据筛选:having(过滤)

     语法:select 列1,列2,聚合... from 表名

        group by 列1,列2,列3...

        having 列1,...聚合...  

     例:查询男生的总人数 :方法1:select count(*) from students where sex='男';

                 方法2:select sex,count(*) fromstudents group by sex having sex='男';(先查询各种性别的人数,再把女过滤掉)

 

 15、分页取值:limit  

当数据量过大的时候,在一页中查看数据是一件非常麻烦的事

    语法:每页显示m条数据,求显示第n页的数据 : select * from students limit (n-1)*m,m

    例:查询前3行学生信息 :select * from students limit 0,3(0表示位置开始,取3条)

    例:每页显示5条数据,求显示第2页的数据  求共几页:select count(*)  from students  (12/5=3页)

      第一页:select * from students limit 0,5

      第二页:select * from students limit (2-1)*5,5  (5表示位置开始,取5条)

      第三页:select * from students limit (3-1)*5,5

  

 

posted @ 2020-09-08 13:18  追梦人娟儿  阅读(290)  评论(0编辑  收藏  举报