10.模糊查询

---带条件的查询---
--语法:select 字段列表/* from 表列表where 条件..
select * from Student where ClassId=1 or ClassId=2 or ClassId=3
--使用in代表一个具体的值范围,in要求指定的范围的数据类型一致
select * from Student where ClassId in(1,2,3)
select * from Student where ClassId not in(1,2,3)
--所谓类型一致是指:系统会为你做强制类型转换,如果可以转换OK,否则报错
--在使用in的时候,指定的范围值需要与字段的值做相应的匹配:强制转换
select * from Student where ClassId in('1','2','3')

--查询考试成绩在`90之间的学员信息
select * from Result where StudentResult>=80 and StudentResult<=90
--如果是数值的范围判断可以使用between...and
select * from Result where StudentResult between 80 and 90

--带条件的查询-模糊查询:是对字符串而言
--必须明确:=就是严格的完全匹配
--%:代表任意个任意字符
--_:代表任意的单个字符
--[]:代表一个具体的值范围中的一个字符
--[^]:代表不在指定的范围之内,放在[]里面才有这个意义
--通配符有意义必须在模糊查询中:模糊查询的关键字是:like
select * from Student where StudentName like '张%' and Sex=''
select * from Student where StudentName like '张__' and Sex=''
--查询学号在~18之间的学员信息
select * from Student where StudentNo not like '[1-2]'
--如果放在范围值的中间没有意义了,只能放在开头
select * from Student where StudentNo  like '[345^672]'

---isnull函数的使用:可以使用一个自定义的字符串替换null值
select StudentNo,StudentName,ISNULL(email,'没有电子邮箱') from Student where ClassId=6

--模糊查询练习:
--1.查询六期班所有姓王的学员
select classid from grade where classname='六期班'
select * from Student where StudentName like '王%' and ClassId=(select classid from grade where classname='六期班')
--2.查询所有科目中包含c 字符的科目信息--不区分大小写
select * from Subject where SubjectName like '%[Cc]%'
--3.查询office最近一次考试时间
select subjectid from Subject where SubjectName='office'
select max(ExamDate) from Result where SubjectId=(select subjectid from Subject where SubjectName='office')
--select 字段列表from 表列表where  条件order by  排序字段列表
--排序对查询得到的结果集做记录重排,并不是修改原始的查询结果集
--desc:降序排序
--asc:升序排序、默认就是升序排序
--top是order by 之后再取值
select top 1 ExamDate 考试日期,StudentNo from Result where SubjectId=(select subjectid from Subject where SubjectName='office') order by 考试日期 desc,StudentNo asc

 

posted @ 2016-10-14 23:48  justqi  阅读(226)  评论(0编辑  收藏  举报