频道栏目
首页 > 数据库 > SQL Server > 正文
数据库_SQL高级查询
2017-07-15 10:39:08      个评论    来源:overfront的博客  
收藏   我要投稿

数据库_SQL高级查询。

子查询

在SELECT查询中,在WHERE查询条件中的限制条件不是

一个确定的值,而是来自于另一个查询的结果。为了给查询提供数据而首先执行的查询语句叫做子查询。

主查询

子查询嵌入的语句叫做父查询或者主查询。

主查询可以是SELECT语句,也可以是其它类型的语句,例如DML或DDL语句。

子查询在WHERE子句中

如果子查询返回多行,主查询中要使用多行比较操作符:IN、ALL、ANY。

EXUSTS关键字

EXISTS后边的子查询至少返回一行数据,则符合条件。

子查询在FROM部分

这样的子查询称作内视图或者匿名视图,只能在当前的SQL语句中有效。

子查询在SELECT部分

可以认为是外连接的另一种表现形式,更灵活。

分页查询

ROWNUM

称作伪列,返回标识行数据顺序的数字,从1开始计数。

在ORACLE中利用ROWNUM的功能可用来进行分页。每次只取一页的数据。每次换页,取下一页的数据。

DECODE函数

语法:

DECODE(expr,search1,result1[,search2,result2...][,default])

比较expr的值,匹配到那个search条件,就返回对应的result结果。

如果没匹配到,返回default。如果没写default,返回NULL。

排序函数

ROW_NUMBER( ) OVER(PARTITION BY col1 ORDER BY col2)

根据col1分组,根据col2排序。顺序编号,组内连续且唯一。

RANK( ) OVER(PARTITION BY col1 ORDER BY col2)

根据col1分组,根据col2排序。相同数据返回相同排名,跳跃排序。

DENSE_RANK( ) OVER(PARTITION BY col1 ORDER BY col2)

根据col1分组,根据col2排序。相同数据返回相同排名,连续排序。

集合操作

集合操作符

UNION

获取两个或以上结果集的并集,去掉重复记录。

UNION ALL

获取两个或以上结果集的并集,包括重复记录。

INTERSECT

获取两个结果集的交集,同时存在于两个结果集中的数据,才会被显示输出。

MINUS

获取两个结果集的差集,结果集一减去结果集二的结果。

高级分组函数

GROUP BY ROLLUP(a,b,c)

对列从右到左以一次少一列的方式进行分组,直到所有的列都去掉后的分组(全表分组)。

GROUP BY CUBE(a,b,c)

(a,b,c),(a,b),(a,c),(a),(b,c),(b),(c)最后对全表进行分组,一共是2的3次方=8次分组。

GROUP BY GROUPING SETS( )

指定分组。

点击复制链接 与好友分享!回本站首页
上一篇:msql优化--索引优化
下一篇:SQLserver2008修改密码,添加新用户的操作方法
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训

版权所有: 红黑联盟--致力于做实用的IT技术学习网站