今天我主要讲一些稍微进阶一些的查询(不过还是比较简单)
1.范围查询:
1.between and 关键字
2.语法: select 字段 from 表名 where 字段 between 范围1 and 范围2 ;
# 查询年龄在13岁到15岁的学生信息
select *
from students
where age
between 13 and 15;
# 而他等价于:
select *
from students
where age >=13
and age <= 15;
2.限制查询:
1.limit可以限制查询的记录条数
2.语法:select 字段 from 表名 limit n ,m;(n:第n+1行开始,m:几行数据)
3.注意:limit不只是单单的可以限制查询条数,还能够进行分页操作,实现分页查询从而优化SQL的查询速度,后面讲哈。
4.还要注意的是:0表示第一条记录,并不是1
# 查询学生表中前3条记录
select *
from students
limit 3;
# 查询学生表中第3条记录到第5条记录
select *
from students
limit 2,3;
3.嵌套查询:
1.检讨擦寻也就是在查询语句中包含有子查询的语句
# 查询student表中分数为第一的学生信息
select *
from students
where score = (select max(score)
from students
);
# 方法2:存在性判断
select *
from students as s1
where not exists(select 'x'
from studnets as s2
where s2.score > s1.score);
# 方法3:计数法(不只是单单的可以查找最大,可以查第二大,第三大,等等)
select *
from students as s1
where (select count(sal)
from students as s2
where s2.sal > s1.sal)=0;
4.分组查询:
1.group by 关键词,起分组作用
2.having 关键词,作用类似于where 但前者需结合group by 使用,且执行顺序在where后面,前者当中可以使用”聚合函数“,但where中不行
# 查询这个班级男生女生的人数
select count(name)
from students
group by sex ;
# 查询男生中分数最高的人和女生中分数最高的人
select name
from students
group by sex
having max(score);
5.多表查询(这个知识需要系统的讲,在后面单独来讲这个东西,这里先不弄)
6.看了上面的操作后可能有很多东西不理解,这里给解释一下哈
1.像min(),max()这些是”聚合函数“,除了这些函数要学以外,还有(窗口函数,时间函数,字符串函数,等函数需要我们去学习)
2.像 as 这样的关键词是指,取别名比如:from student as s1 就是指,student这个表的别名是s1,在使用函数是就可以直接使用别名来操作,比如:s1.name
3.exists 也是一种关键词,常用于”存在性判断“