--☆★--带条件查询--★☆--
select 字段 as 别名,字段 as 别名 from 表名 where 条件
between and---区间查找
sleect 字段 from 表名 where 字段 between 20 and 30 ---查询20-30之间的数据
等同
sleect 字段 from 表名 where 字段>条件 and 字段<条件
in--离散查询
select 字段 from 表名 where 字段 in(条件)
等同
select 字段 from 表名 where 条件1 or 条件2 or ....
☆==模糊查询--(针对字符串)
--“%”代表0个或多个 “_”一个任意字符
select * from 表名 字段 like '王%'
select * from 表名 字段 like '王_'
select * 表名 where 字段 like '王%' and LEN(FName)=3查询兴亡并且名字长度为3的人
通配符[]--里面任意多的字符只取一个
查询包含磊,伟的人
select * 表名 字段 where FName like '%[磊,伟]%'
查询不包含磊,伟的人
select * 表名 字段 where FName like '%[^磊,伟]%'
☆==isnull函数
select FName,FAge,数学成绩=isnull(cast(FMath as varchar(50)),'缺考') from 表名 where FMath is null
--同一列上的数据类型必须一致用:cast转换
--☆★--数据排序--★☆--
(集合中的数据是无序的,如果排序之后当有序了之后“游标”,集合可以作为一个查询数据源,但是有序了的“游标”是不能作为数据源的)
select * from (select * from MyStudents where FAge>40) as tbl 可以正确运行
select * from (select * from MyStudents where FAge>40 order by FAge desc) as tbl 被排序之后,子查询变为游标不能作为查询
select * from (select top 5 * from MyStudents where FAge>40 order by FAge desc) as tbl 取前5为有成为集合,可以作为数据源当做查询
--先按英语排序再按数学成绩排序
select * from 表名 order by FEnglish desc,FMath desc
查询学生表中的英语成绩信息显示,姓名,性别,英语成绩,数学成绩。平均分
select FName as 姓名,FGender as 性别,FEnglish as 英语成绩,
FMath as 数学成绩,平均分=(FEnglish+FMath)/2 from MyStudents order by (FEnglish+FMath)/2 desc
--☆★--数据分组--★☆--(数据挖掘)
☆==group by
--统计MyStudents中男女的个数
select count(*) as 人数,性别=FGender from MyStudents group by FGender
☆==having语句对组进行筛选的。where也是进行筛选的。区别是where是在分组前进行筛选。having是在分组后进行筛选。
--例如查询男性人数大于3的部门
select 部门号=EmpDepId,部门男性人数=Count(*)
from Employees where EmpGender='男' group by EmpDepId having count(*)>3
spl语句执行顺序(优先级从高到低)
{
from - wher - group by - having - select - order by
}