一般结构:
SELECT [TOP 记录数 或 PERCENT 小于100的数字 或 ALL] <字段列表或聚合函数 [AS 别名]>
FROM <表名> [JOIN <表名> ON <表1的某些字段和表2的某些字段的对应关系>]
[WHERE <逻辑表达式>]
[GROUP BY <字段列表>]
[HAVING <逻辑表达式>]
[ORDER BY <字段列表> DESC/ASC]
1. 如果要列出所有的字段,可以用"*"表示,此时各字段出现的顺序可能是随机的,一般情况下跟创建表的时候一致。
2. 如果有group by 语句,则SELECT的选择列必须为这些字段或聚合函数,换句话说不能出现其他的任何字段
如:select 部门编号,名称,count(姓名) as 职工数 from tGroup g,tEmployee e where g.部门编号=e.所属部门 group by 部门编号,名称
3. WHERE语句必须出现在Group by前面,Having与where作用相同,它却必须在group by语句的后面。他们的执行顺序也不同,where是在group by之前执行,having在group by结果出来之后再执行。
5. order by一定出现在一条语句的最后面。它是在选择的结果集出来之后再做操作,因此可以使用别名,其他的where和group by都不允许。
6. 一般来讲,order by不允许出现在字句中。但当Select指定了(如:top 1000或percent 100)记录条数时除外。
7. 一般情况下出现聚合函数,则一定要有group by字句;除非Select字句只剩下聚合函数。如:select avg(年龄),sum(年龄),min(年龄) from tEmployee