子查询:子查询时一条查询语句,他是嵌套在其他sql语句当中的,目的是为外层的sql语句提供数据,子查询在DDL,DML,DQL中都可以使用。
DDL中使用子查询,可以将一个查询到额结果集当做一张表快速创建出来
子查询根据条件分为:单行单列子查询,多行单列子查询,多行多列子查询其中单列子查询常用在过滤条件中,而多列子查询常当做表使用对于多行单列子查询,在进行过滤判断是要配合in any all使用
EXISTS关键字 用在过滤条件中,其后跟一个子查询,只要改子查询可以查询出一条记录,那么exists就认为满足条件
分页查询:分页查询就是将一个查询语查询的数据分批分段查询出来,这样做的好处在于,当一个查询语句可以查询的结果分厂大时,有效的减少网络传输的数据量,提高响应速度,降低系统开销。
ROWNUM ROWNUM时一个伪列,实际不存在于任何表中,但是每张表都可以查询该字段,该字段的值为查询的结果即中每条记录的行号。该字段的值是伴随查询的过程中动态生成的只要可以从表中查询出一条记录,那么该字段的值就是该记录在的当前结果集中的行号,行号从2开始递增。
在使用ROWNUM字段为结果集编行号的过程中,不要使用rownum做>1以上的判断做为过滤条件,否则将得不到任何结果。
PAGTSIZE:每页显示的条目 page 要显示的页数 start:(page-1)*pagesize+1 end:pagesize*page
排序函数 可以将结果按照指定的字段分组,组内在按照指定的字段排序,然后生成组内编号 ROW_NUMBER生成组内连续且唯一的数字
--高级分组
--ROLLUP
--GROUP BY ROLLUP(A,B,C)
--等价于
--GROUP BY A,B,C
--UNION ALL
--GROUP BY A,B
--UNION ALL
--GROUP BY A
--UNION ALL
SELECT * FROM SALES_TAB_ZYL
SELECT YEAR_ID,MONTH_ID,DAY_ID,SUM(SALES_VALUES) FROM SALES_TAB_ZYL GROUP BY ROLLUP(YEAR_ID,MONTH_ID,DAY_ID) ORDER BY YEAR_ID,MONTH_ID,DAY_ID
--CUBE 参数的每种组合都进行一次分组
SELECT YEAR_ID,MONTH_ID,DAY_ID,SUM(SALES_VALUES) FROM SALES_TAB_ZYL GROUP BY CUBE(YEAR_ID,MONTH_ID,DAY_ID) ORDER BY YEAR_ID,MONTH_ID,DAY_ID
--GROUPING SETS:可以自定义分组方式,每个参数为一种分组方式,然后将这些分组统计的结果并在一个结果集中显示。
SELECT YEAR_ID,MONTH_ID,DAY_ID,SUM(SALES_VALUES) FROM SALES_TAB_ZYL GROUP BY GROUPING SETS((YEAR_ID,MONTH_ID,DAY_ID)) ORDER BY YEAR_ID,MONTH_ID,DAY_ID