子句:Where、Starting with、Order by、Group by、Having
SQL语句顺序:Select之后是From,之后是Where;Group by;Having和Order by(其余的子句,包括UNION;UNION ALL;INTERSECT和MINUS)
WHERE 子句
* Where子句将会使SQL语句更具有选择性。
STARTING WITH 子句
* 附加于Where子句上,作用与Like(exp%)相似。
ORDER BY 子句
* 排序 Select * From table Order by name; (根据name排序)
* 排序默认按升序排列。Order by ASC
* 按降序排列。 Order by Desc。
* Order by 可以使用多个字段。如第一字段相对,按第二字段排序,以此类推。每个字段排序方式可以不同。比如:Select * From table Order by name Asc,id desc。表示name按升序,id按降序排列。
* 如果已经知道进行排序的列是表中第一列的话,可以用Order by 1来替代输入列的名字,但不推荐这样做。
GROUP BY 子句
* 分组统计,可以对Select的结果进行分组后在应用汇总函数。
* 可以对多列进行分组。
* 当要分组结果返回多个数值时不能在Select子句中使用除分组列以外的列。 比如:Select age From table group by name。 这是错误的,因为age不是分组信息。
* 可以使用在Select中未列出的列进行分组。比如:Select payee,count(amount) From checks group by payee,amount; 可以使用amount分组。
HAVING 子句
* 对分组数据进行限制。
* Having 允许将汇总函数作为条件。比如:Select team,Avg(Salary) From table group by team Having Avg(Salary)<100; 表示:汇总结果Salary平均值<100
* Having 后面没有汇总函数时,条件针对每一条语句。比如:Select team,Avg(Salary) From table group by team Having Salary<100; 表示:Salary<100的数据进行汇总,求平均值。
* 有些解析器在Having子句中使用了非汇总函数将会导致错误。
* Having 允许使用多个条件。
* Having 可以使用在Select中没有指出的字段进行汇总。
* Having 可以使用其它的逻辑操作符。
* Having 可以使用IN操作符
子句综合查询
* 执行顺序:先where,之后排序,之后分组。
相关内容:
SQL21日自学通笔记一:SQL标准
SQL21日自学通笔记二:查询语句Select
SQL21日自学通笔记三:运算符
SQL21日自学通笔记四:函数
SQL21日自学通笔记五:SQL中的子句
SQL21日自学通笔记六:表的联合
SQL21日自学通笔记七:子查询内嵌的SQL子句