【SQL Server】系统学习之一:表表达式
本节讨论的相关内容包括:视图、派生表、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) 最大递归次数
【SQL Server】系统学习之一:表表达式的更多相关文章
- SQL Server高级内容之表表达式和复习
1. 表表达式 (1) 将表作为一个源或将查询的一个结果集作为一个源,对源做处理,然后得到一个新的数据源,对其进行查询. (2)表表达式放在from子句中 (3)派生表,将表的查询得到的结果集作为一 ...
- Sql Server系列:通用表表达式CTE
1 CTE语法WITH关键字 通用表表达式(Common Table Express, CTE),将派生表定义在查询的最前面.要使用CTE开始创建一个查询,可以使用WITH关键字. CTE语法: WI ...
- sql server系统表详细说明
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库当前配置选 ...
- SQL Server 系统表简介
SQL Server 系统表简介 系统目录是由描述SQL Server 系统的数据库.基表.视图和索引等对象的结构的系统表组成.SQL Server 经常访问系统目录,检索系统正常运行所需的必要信息. ...
- SQL SERVER系统表
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项s ...
- SQL Server系统表和常用函数(转)
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项s ...
- SQL Server系统表sysobjects介绍与使用(转)
SQL Server系统表sysobjects介绍与使用 关于SQL Server数据库的一切信息都保存在它的系统表格里.我怀疑你是否花过比较多的时间来检查系统表格,因为你总是忙于用户表格.但是,你可 ...
- sql server 系统表系统视图 及作用说明
sql server 系统视图,可分为: 目录视图 兼容性视图 动态管理视图和函数 信息架构视图 复制视图 系统表: sysaltfiles主数据库 保存数据库的文件 sysch ...
- SQL Server系统表sysobjects介绍
SQL Server系统表sysobjects介绍 sysobjects 表结构: 列名 数据类型 描述 name sysname 对象名,常用列 id int 对象标识号 xtype char(2) ...
- Sql server 系统表
sql server系统表详细说明 SQL Server 用户库中系统表说明 名称 说明 备注 syscolumns 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行. sys ...
随机推荐
- 修饰符(static、final、abstract)第一篇
三个修饰符: 一.static: 作用域: 1. 属性 1.1 静态属性不必要创建新对象,可直接用类调用 1.2 其值发生改变,则类中的值也会随之而变并延伸到其他对象中 例子: class Anima ...
- session处理超时的三种方式
1. 在web容器中设置(此处以tomcat为例) 在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: <!-- ========= ...
- javaio-printwriter
转自http://www.cnblogs.com/skywang12345/p/io_25.html PrintWriter 介绍 PrintWriter 是字符类型的打印输出流,它继承于Writer ...
- activiti 任务授权,把流程中当前任务授权个其他用户代为办理
/ * 授权代办 * @param serDoc / @Transactional(readOnly = false) public void authAgent(SerDoc serDoc) { S ...
- https那些事儿
(一)SSL/TLS协议运行机制的概述 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获 ...
- cve-2015-1635 poc
import socket import random ipAddr = "10.1.89.20" hexAllFfff = " req1 = "GET / H ...
- GBG java
https://sourceware.org/gdb/onlinedocs/gdb/Sample-Session.html#Sample-Session http://m.blog.csdn.net/ ...
- Improve Scalability With New Thread Pool APIs
Pooled Threads Improve Scalability With New Thread Pool APIs Robert Saccone Portions of this article ...
- OkHttpUtils
对okhttp的封装类,okhttp见:https://github.com/square/okhttp.目前对应okhttp版本3.3.1. 用法: Android Studio compile ' ...
- NoSQL之Redis高级实用命令详解--安全和主从复制
Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...