一、select语句逻辑处理顺序:数据库
FORM架构
WHERE函数
GROUP BY性能
HAVING对象
SELECT排序
OVER索引
DISTINCT效率
TOPselect
ORDER BY总结
总结:
二、FORM子句的表名称应该带上数据库架构名称,好比:MIS.UserInfo,提升性能。查询语句中标识符很是规,用'"来分隔,好比:"MIS"."UserInfo"
三、WHERE子句有索引的列查询效率高,返回结果是逻辑表达式为True的行,False和UNKNOWN的行不返回。
四、GROUP BY以后,逻辑处理对象为组,每一组为一行,GROUP BY的元素惟一出现一次。select显示的列只能包括GROUP BY出现的列,其余列只能做为聚合函数(COUNT,MAX,MIN,SUM,AVG)的输入。
五、COUNT(*),COUNT(列名)不相同,COUNT(*)包括NULL,聚合函数括弧内能够用DISTINCT
六、SELECT子句中表达式定义别名:表达式 AS 别名,表达式= 别名,表达式 别名。若是select的列没有用","分开,则认为后面是一个别名。别名不能在逻辑处理比select靠前的语句中和select子句中。
七、带ORDER BY的查询返回一个游标的结果。
八、当SELECT子句中指定了DISTINCT,ORDER BY子句只能选取SELECT列表中出现的元素
九、WITH TIES 返回与TOP n行中最后一行的排序值相同的其余行
十、OVER子句只能在SELECT和ORDER BY中使用,可以返回基本列的同时,在同一行对基本列进行聚合。
十一、OVER子句支持四种排名函数:ROW_NUMBER(行号),RANK(以前有多少行),DENSE_RANK(前面有多少个),NTILE(接受一个组数,对结果集分组,为每个行代表组号)。SELECT列表中不能同时出现ROW_NUMBER和DISTINCT。
十二、OVER括弧内能够用PARTITION BY(相似于GROUP BY),ORDER BY。