您的位置主页 > MYSQL

强大的Select基础学习

1,普通选择

三种指定列别名的方法(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

如果没有必须的要求,不要进行排序,因为比较耗时