查询(条件,比较,逻辑,模糊,范围,排序,聚合,分组,分页)
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