三种指定列别名的方法(ID为列名):
SELECT ID ii FROM Table_1
SELECT ID AS ii FROM Table_1
SELECT ii = ID FROM Table_1
2,计算字段
select PI()
3,select top n [PERCENT],可以选择top n或者n%
top和group by联合使用,会产生不可以预期的结果
4,派生表(逻辑表)
即:从from子句中使用select得到虚拟的表;
注意:虚拟表必须有别名
SELECT ID, name
FROM ( SELECT * FROM Table_1 ) A
派生表的功能非常类似于view(视图,下一节介绍)
5,连接,join
在inner连接时候,从句的顺序不会影响结果集合;但是outer连接可能会影响,尤其是在where子句中存
在不匹配连接的时候
6,谓词
谓词就是返回TRUE或者NOT TRUE的表达式
一些常见的谓词函数:
1)BETWEEN a AND b,即:[a,b]左右封闭区间;
2)LIKE 字符串的模糊比较:%任意多个字符,_一个字符,[ab]二选一,[^a]非;
3)EXIST 子查询是否有结果返回;
4)IN,某个值与列表中的每一个值进行比较,查看是否在其中;IN()可以使用枚举的值,也可以使用
select的结果集合;
5)ANY和ALL,专门用于子查询
IN和=ANY一样,NOT IN和ALL一样
7,子查询
嵌套查询
8,聚集函数
前面曾经提到过。
COUNT(*)会自动忽略NULL,COUNT(col)不忽略NULL;其他的聚集函数都自动忽略NULL;
所有的这些聚集函数都有个参数,可以是:
ALL 或者 DISTINCT,以便决定是否忽略重复的值;
它常与GROUP BY以及HAVING联合使用;
9,GROUP BY和HAVING
1)Group By对表进行分组,Having来限制要返回的组;这就像where之于select一样;
2)**** **** ****
Select DISTINCT aa from ta;
Select aa from ta group by aa;
**** **** ****
二者的功能是完全一样的;
3)CUBE 和 ROLLUP
RollUp在结果集合中产生一个总计行,该行中某个列的GROUPING()检查结果为NULL,可以根据这个来进行后续处理;
Cube会产生一个多维的结果,不止是一行;
4)having的限制作用是在查询产生之后才进行的,所以他的功能比where还要小;所以要尽量使用where
10,union
1)返回的列的名字,以第一个UNION之前的表的名字为准;
2)UNION ALL不处理重复行,而UNION处理重复行;如果表格比较大的话,这个过程会非常耗时;
11,order by
如果没有必须的要求,不要进行排序,因为比较耗时