一、CTE是什么
CTE是指公用表表达式(Common Table Expression)。它是一种临时结果集,可以在Select、Insert、Update、Delete语句的执行范围内定义并使用。也可用在 CREATE VIEW 语句中,作为该语句的 SELECT 定义语句的一部分。公用表表达式可以包括对自身的引用。这时它被称为递归公用表表达式。
语法:WITH < Expression_Name > [ ( Column_Name [ ,......n ] ) ]
AS
(CTE_query_definition)
二、视图
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图在数据库中并不是以数据值存储集形式存在,除非是索引视图。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
|语法:CREATE VIEW View_Name
AS
Select_Statement [ ; ]
三、CTE与视图的不同:
1.可以创建递归查询
2.不用将定义存贮在元数据中(即不存贮为对象)
3.在同一语句中多次引用生成的表
4.可以在用户定义的例程(如函数、存储过程、触发器或视图)中定义 CTE
总之,使用 CTE 可以获得提高可读性(便于在代码中多次引用)和轻松维护复杂查询的优点(MSDN这样写的,呵呵)。