本节讨论的相关内容包括:视图、派生表、CTE、内联表值函数

场景:如果要查询一组数据(例如聚合数据,也就是几个表聚合在一起的数据),这些数据并未在数据库中以表的形式存在。

1、视图:通常用来分解大型的查询。使查询更容易,无需在临时表中复制或者存储数据。视图存于数据库,适用于所有批处理的数据库对象。不适用于单个T-SQL的批处理。

create view myview

as

select ......

2、派生表(内联视图)

select ....

from(select .....) as a

完全虚拟,优化器不会为它生成单独的计划。经过编译,会合并外部查询和内部查询。不会是性能降低或提高。

出现多引用时比较麻烦,需要多次重复定义、多次查询。

不允许使用order by(除非和top一起使用)

派生表不能使相关的(where 外部查询表.a=内部查询表.a)[除了apply]

3、CTE

可定义多个

with c1 as

()

c2 as

()

不可嵌套,但为了实现和嵌套派生表相同的效果,可以在c2中使用c1

多引用优势,在接下来的查询中,多次引用cte,替代派生表的重复定义,多次查询方案。 好处是写法简单,但是实质,仍然是重新组织查询,直接访问底层的对象。所以如果数据表中包含大量的行,此时应该考虑使用临时表或表变量,减少访问基础表的次数为一次。

很重要的一个用处:递归

with emp as

(

select empid,empname ,mgrid from employees where empid=5

union all

select empid,empname ,mgrid from employees as em

join emp on emp.mgrid=em.empid

)

select * from emp

option (maxrecursion 2) 最大递归次数

转载于:https://www.cnblogs.com/xyang/p/3885577.html

【SQL Server】系统学习之一:表表达式相关推荐

  1. sql server 2008学习3 表组织和索引组织

    表组织 表包含在一个或多个分区中,每个分区在一个堆或一个聚集索引结构包含数据行.堆页或聚集索引页在一个或多个分配单元中进行管理,具体的分配单元数取决于数据行中的列类型. 聚集表.堆和索引 SQL Se ...

  2. 在Sql Server 2005使用公用表表达式CTE简化复杂的查询语句

    公用表表达式CTE是Sql Server 2005引入的一种新的表表达式.CTE在许多方面都类似于派生表.逻辑上CTE是一个临时结果集,它仅仅存在于它发生的语句中.您可以在SELECT.INSERT. ...

  3. sql server系统表详细说明(二)(摘)

    sysaltfiles 在特殊情况下,包含与数据库中的文件相对应的行.该表存储在 master 数据库中. 列名 数据类型 描述 fileid smallint 每个数据库的唯一文件标识号. grou ...

  4. sql server 2008学习1–系统数据库

    master数据库 数据库记录 SQL Server 系统的所有系统级信息.这包括实例范围的元数据(例如登录帐户).端点.链接服务器和系统配置设置.此外,master 数据库还记录了所有其他数据库的存 ...

  5. sql server系统表详细说明(转)

    sysaltfiles  主数据库 保存数据库的文件 syscharsets  主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库当前配置选 ...

  6. sql server 系统表 介绍

    sysaltfiles  主数据库 保存数据库的文件 syscharsets  主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库当前配置选 ...

  7. SQL SERVER系统表

    系统表查看 SQL SERVER系统表在系统数据库master中,其实确切的说这些系统表是视图,可以在master库下的视图下查看 常用系统表及功能 sysaltfiles 主数据库 保存数据库的文件 ...

  8. SQL Server数据库学习总结及T-SQL语法使用实战

    SQL Server数据库及T-SQL实战 声明 名词解释 SQL Server数据库 安装sql server 数据库中的三种完整性 SQL Server数据库基本操作 创建数据库 指定多个数据库文 ...

  9. SQL Server 2005 术语词汇表

    术语 定义 ActiveX 数据对象 (ActiveX Data Objects) 一种易于使用的应用程序编程接口 (API),用于封装 OLE DB 以在诸如 Visual Basic.Visual ...

  10. SQL SERVER深入学习学习资料参考

    SQL SERVER深入学习学习资料参考 1.微软Webcast<sql server 2000完结篇>. 尽管微软Webcast出了很多关于Sql Server的系列课程,但是最为深入讲 ...

最新文章

  1. 第5次作业+105032014166+张珍珍
  2. 整理:warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
  3. Apriori算法进行关联分析(2)
  4. 干货 | 工行分布式数据库选型与大规模容器化实践
  5. 看了就会的 Node.js 三大基础模块常用 API
  6. metasploitable3渗透测试
  7. vue实现一个移动端屏蔽滑动的遮罩层
  8. python运维自动化老男孩_Day1 老男孩python自动化运维课程学习笔记
  9. 实验十OSPF路由聚合
  10. 【前端工程化】使用tippy.js代替自定义的popover/tooltip
  11. 元数据看板的初步设计思路
  12. Scroller类及scroll相关方法总结
  13. 齐了!百度、腾讯、滴滴、抖音的技术大佬都来了
  14. oracle 支持ltfs的厂商_甲骨文革新磁带存储StorageTek产品线
  15. windows聚焦壁纸不更新_win10系统锁屏壁纸聚焦不更新的解决方法
  16. 离散数学-3 命题逻辑的推理理论
  17. 蒲公英linux客户端登录提示密码错误的解决方法
  18. 圣思园——Java SE Lesson 5
  19. Azure学习笔记2.——六种虚拟网络连接
  20. el-image的fit属性

热门文章

  1. Apache的服务端包含--SSI
  2. 常见NoSQL系统使用场景分析
  3. centos vnc配置笔记
  4. Lucene.net中文分词探究
  5. PE文件和COFF文件格式分析——节信息
  6. libusb中的热插拔使用举例
  7. 有效的rtsp流媒体测试地址汇总
  8. 设计模式之抽象工厂模式(Abstract Factory)摘录
  9. 【Qt】在QtCreator中使用Ctrl+Shift+f快捷键打开高级查找窗口失效的解决方法
  10. hadoop 2 java hdfs_Hadoop2.6.0学习笔记(二)HDFS访问