常用语句
一、order by
1 --先按英语成绩排序,再按数学成绩排序 2 --默认不谢排序方式时是asc(升序) 3 select * from Mystudentorder 4 order by FEnglish desc,FMath desc 5 6 --查询学生的姓名,英语成绩,数学成绩,平均分 7 select 8 fname 姓名 9 fmath 数学成绩 10 fenglish 英语成绩 11 平均分=(fmath+fenglish) / 2.0 12 from Mystudent 13 order by (fmath+fenglish) / 2.0 desc --order by后面可以跟一个表达式 14 15 select 16 fname 姓名 17 fmath 数学成绩 18 fenglish 英语成绩 19 平均分=(fmath+fenglish) / 2.0 20 from Mystudent 21 order by 平均分 desc --order by 在语句最后执行
字符串排序先比较第一个字符,再比较第二个字符。
二、group by
1 --统计出Mystudent 表中,男同学的个数与女同学的个数 2 select 3 fgender as 性别 --当fgender出现了group语句中的时候,就可以与聚合函数一起使用 4 COUNT(*) as 人数 --统计每一组的记录条数,先执行group by语句分组,分组以后再count(*)统计每一组的人数 5 from Mystudent 6 group by fgender --分组以后,分出来几个组,那么count(*)就统计几次 7 8 --统计班级的班级Id及该班的班级人数 9 --所以按班级分组 10 select 11 tsclassid as 班级Id, 12 COUNT(*) as 班级人数 13 from TblStudent 14 group by TSClassId 15 16 统计班级的班级Id及该班的班级中男同学的人数 17 select 18 tsclassid as 班级Id, 19 COUNT(*) as 班级人数 20 from TblStudent 21 where tsgender='男' 22 group by TSClassId --group by最后执行,把所有男同学统计出来之后再执行 23 24 --一般分组语句group by都要与聚合函数配合使用,如果没有聚合函数,分组意义不大 25 --当在select查询语句中出现聚合函数是,这时不能再select查询语句中再出现其他列,除非该列也在group子句中出现或者在聚合函数中出现
三、having
1 --having 对组的筛选,哪些组显示,那些组不显示 2 --1.统计每个班的人数 3 select 4 tsclassId as 班级Id, 5 COUNT(*) as 班级人数 6 from TblStudent 7 where tsgender='男' 8 group by tsclassId 9 having COUNT(*) > 2 10 11 select 12 tsclassId as 班级Id, 13 COUNT(*) as 班级人数 14 from TblStudent 15 where tsgender='男' 16 group by tsclassId 17 having 班级人数 > 2 --错 from->where->group by->having->select->order by 18 --当程序执行到having语句的时候,select 语句还没有被执行,所以这里还没有创建别名‘班级人数’。 19 --having语句后能跟什么列,主要看分组后的结果集中包含什么列 20 --having tsclassId in (1,2,4) 可以