上一节简单的总结了单表查询和多表查询,以下给大家总结了查询语句的结构,如下:
SELECT...FROM...WHERE...GROUP BY...HAVING...ORDER BY...LIMIT...
本节主要总结下常用的条件字段的匹配问题,最常见的是“=”,如select * from student where id=1501001等,除此之外平时也会遇到一些不是"=的情况。
1.掌握in的用法
使用场景:做条件查询的时候,条件字段的取值有多个情况,in(范围),not in(范围)
实例:查询学号id为1501001或1501002或1502001的学生信息。
分析过程:
1.查询涉及到的表:student
2.查询字段信息:没有特定的即用*表示
3.关联条件:只有一个表,不用关联
4.过滤条件:id in(1501001,1501002,1502001)
所以最终得到的sql如下:
select
*
from
student
where
id in(1501001,1501002,1502001)
拓展:除了in,对应的有not in的用法,指条件字段不在某个数据内的情况。
2.掌握模糊查询like的用法
2.1使用%来模糊匹配
使用场景:条件字段不完整时,且没有字符长度限制时,可以用%做模糊匹配。
实例:查询所有姓“胡”的学生信息。
分析过程:
1.查询涉及到的表:student
2.查询字段信息:没有特定的即用*表示
3.关联条件:只有一个表,不用关联
4.过滤条件:name like ‘胡%‘
所以最终得到的sql如下:
select
*
from
student
where
name like ‘胡%‘
拓展:以胡开头是 ‘胡%‘,以胡结尾是 ‘%胡‘,包含胡是 ‘%胡%‘
2.3使用_来模糊匹配
_和%区别是,_起到的是一个占位符的作用,一个_只能匹配一个任意的字符,而%可以匹配任意长度的字符。
使用场景:条件字段不完整时,且有字符长度限制时,可以用_做模糊匹配。
实例:查询所有姓“胡”且名字为两个字的学生信息。
分析过程:
1.查询涉及到的表:student
2.查询字段信息:没有特定的即用*表示
3.关联条件:只有一个表,不用关联
4.过滤条件:name like ‘胡_‘
所以最终得到的sql如下:
select
*
from
student
where
name like ‘胡_‘
3.between和distinct(比较简单就放在一起说了^_^)
between使用场景:条件字段的值处于两个值之间
distinct使用场景:去除查询结果中的重复数据
实例:根据学生的成绩表,查出所有成绩在85-90分的学号,学号不能重复
分析过程:
1.查询涉及到的表:score
2.查询字段信息:distinct id
3.关联条件:只有一个表,不用关联
4.过滤条件:score between 85 and 90
所以最终得到的sql如下:
select
distinct id
from
score
where
score between 85 and 90
SQL笔记二:过滤条件字段多个取值、模糊匹配和两个值之间取值、去重
原文:https://www.cnblogs.com/123blog/p/10238298.html