SQL SERVER 2005 新特性---CTE--1.指定临时命名的结果集,这些结果集称为公用表表达式 (CTE)。
SQL SERVER 2005 新特性---CTE--
2.该表达式源自简单查询,并且在 SELECT、INSERT、UPDATE 或 DELETE 语句的执行
SQL SERVER 2005 新特性---CTE--
范围内定义。
SQL SERVER 2005 新特性---CTE--
3.该子句也可用在 CREATE VIEW 语句中,作为该语句的 SELECT 定义语句的一部分。
SQL SERVER 2005 新特性---CTE--
4.公用表表达式可以包括对自身的引用。这种表达式称为递归公用表表达式。
SQL SERVER 2005 新特性---CTE

SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
use demo2
SQL SERVER 2005 新特性---CTE
select * from student
SQL SERVER 2005 新特性---CTE
go
SQL SERVER 2005 新特性---CTE
--创建一个简单的CTE
SQL SERVER 2005 新特性---CTE--
统计学生表中的男女总人数
SQL SERVER 2005 新特性---CTE
WITH StuReps(SEX, TotalReports) AS 
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE    
SELECT SEX, COUNT(*
SQL SERVER 2005 新特性---CTE    
FROM STUDENT AS e
SQL SERVER 2005 新特性---CTE    
WHERE SID IS NOT NULL
SQL SERVER 2005 新特性---CTE    
GROUP BY SEX
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
SELECT SEX, TotalReports 
SQL SERVER 2005 新特性---CTE
FROM StuReps 
SQL SERVER 2005 新特性---CTE
ORDER BY SEX;
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
--统计每个学生考试课程总数
SQL SERVER 2005 新特性---CTE
with CurReps(SID,TotalSutudyCur)as 
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE 
select sid, count(curid) as TotalSutudyCur
SQL SERVER 2005 新特性---CTE 
from scorebook 
SQL SERVER 2005 新特性---CTE 
group by sid 
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
select sid,TotalSutudyCur
SQL SERVER 2005 新特性---CTE
from   curReps
SQL SERVER 2005 新特性---CTE
order by sid
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
GO
SQL SERVER 2005 新特性---CTE
--统计考试课程总数大于2的考生信息
SQL SERVER 2005 新特性---CTE
with CurReps(SID,TotalSutudyCur)as 
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE 
select sid , count(curid) as TotalSutudyCur
SQL SERVER 2005 新特性---CTE 
from scorebook 
SQL SERVER 2005 新特性---CTE 
group by sid 
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
select a.sid ,b.name,a.TotalSutudyCur
SQL SERVER 2005 新特性---CTE
from   curReps as a,student as b
SQL SERVER 2005 新特性---CTE
where  a.TotalSutudyCur>2 and a.sid=b.sid
SQL SERVER 2005 新特性---CTE
order by a.sid
SQL SERVER 2005 新特性---CTE
GO
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
select * from scorebook
SQL SERVER 2005 新特性---CTE
go
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE 
SQL SERVER 2005 新特性---CTE
--下面的语句将显示下列错误
SQL SERVER 2005 新特性---CTE--
无法绑定由多个部分组成的标识符 "e.score"。
SQL SERVER 2005 新特性---CTE--
在公用表表达式中存在一个字段名称为score
SQL SERVER 2005 新特性---CTE--
在要更新的scorebook表中也存在一个字段名称为score
SQL SERVER 2005 新特性---CTE

SQL SERVER 2005 新特性---CTE
with scoreReps(id,sname,cid,score)
SQL SERVER 2005 新特性---CTE
as
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE
select a.sid,a.name,b.curid,b.score
SQL SERVER 2005 新特性---CTE
from student as a
SQL SERVER 2005 新特性---CTE
inner join scorebook as b
SQL SERVER 2005 新特性---CTE
on a.sid=b.sid
SQL SERVER 2005 新特性---CTE
where a.sid is not null
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
update scorebook set e.score=e.score*0.5
SQL SERVER 2005 新特性---CTE
from scorebook as e, scoreReps as f 
SQL SERVER 2005 新特性---CTE
where  e.sid=f.id and f.sname='frj'
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
--修改后,执行成功.
SQL SERVER 2005 新特性---CTE
with scoreReps(id,sname,cid,score2)
SQL SERVER 2005 新特性---CTE
as
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE
select a.sid,a.name,b.curid,b.score
SQL SERVER 2005 新特性---CTE
from student as a
SQL SERVER 2005 新特性---CTE
inner join scorebook as b
SQL SERVER 2005 新特性---CTE
on a.sid=b.sid
SQL SERVER 2005 新特性---CTE
where a.sid is not null
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
update scorebook set score=score*0.5
SQL SERVER 2005 新特性---CTE
from scorebook as e, scoreReps as f 
SQL SERVER 2005 新特性---CTE
where  e.sid=f.id and f.sname='frj'
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
--恢复原来的值
SQL SERVER 2005 新特性---CTE
with scoreReps(id,sname,cid,score2)
SQL SERVER 2005 新特性---CTE
as
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE
select a.sid,a.name,b.curid,b.score
SQL SERVER 2005 新特性---CTE
from student as a
SQL SERVER 2005 新特性---CTE
inner join scorebook as b
SQL SERVER 2005 新特性---CTE
on a.sid=b.sid
SQL SERVER 2005 新特性---CTE
where a.sid is not null
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
update scorebook set score=score*2
SQL SERVER 2005 新特性---CTE
from scorebook as e
SQL SERVER 2005 新特性---CTE
join scoreReps as f 
SQL SERVER 2005 新特性---CTE
on  e.sid=f.id and f.sname='frj'
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
--在CREATE VIEW 语句中,调用CTE;
SQL SERVER 2005 新特性---CTE

SQL SERVER 2005 新特性---CTE
IF OBJECT_ID ('CTETestView''view'IS NOT NULL
SQL SERVER 2005 新特性---CTE
DROP VIEW CTETestView ;
SQL SERVER 2005 新特性---CTE
GO
SQL SERVER 2005 新特性---CTE
CREATE VIEW CTETestView
SQL SERVER 2005 新特性---CTE
AS
SQL SERVER 2005 新特性---CTE
with scoreReps(id,sname,cid,score2)
SQL SERVER 2005 新特性---CTE
as
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE
select a.sid,a.name,b.curid,b.score
SQL SERVER 2005 新特性---CTE
from student as a
SQL SERVER 2005 新特性---CTE
inner join scorebook as b
SQL SERVER 2005 新特性---CTE
on a.sid=b.sid
SQL SERVER 2005 新特性---CTE
where a.sid is not null
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
select * from scorereps
SQL SERVER 2005 新特性---CTE
go
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
select * from ctetestview
SQL SERVER 2005 新特性---CTE
go
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
--递归用法的练习
SQL SERVER 2005 新特性---CTE--
查找姓名为'LI'的书是从那个人手里借来的.
SQL SERVER 2005 新特性---CTE
create table BorrowCommodity
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE SID  
INT,
SQL SERVER 2005 新特性---CTE SNAME 
NVARCHAR(20),
SQL SERVER 2005 新特性---CTE BorrowFrom 
INT
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
GO
SQL SERVER 2005 新特性---CTE
INSERT INTO BorrowCommodity values(1,'FRJ',NULL)
SQL SERVER 2005 新特性---CTE
INSERT INTO BorrowCommodity values(2,'HLK',1)
SQL SERVER 2005 新特性---CTE
INSERT INTO BorrowCommodity values(3,'LI',4)
SQL SERVER 2005 新特性---CTE
INSERT INTO BorrowCommodity values(4,'WANG',2)
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
GO
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
WITH BorrowFromReps(ID)
SQL SERVER 2005 新特性---CTE
AS
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE
SELECT BorrowFrom 
SQL SERVER 2005 新特性---CTE
from BorrowCommodity
SQL SERVER 2005 新特性---CTE
where sname='LI'
SQL SERVER 2005 新特性---CTE
union all
SQL SERVER 2005 新特性---CTE
SELECT A.BorrowFrom
SQL SERVER 2005 新特性---CTE
from BorrowCommodity as a,BorrowFromReps as b
SQL SERVER 2005 新特性---CTE
where a.SID=b.ID
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
select a.* 
SQL SERVER 2005 新特性---CTE
from BorrowCommodity as a ,BorrowFromReps as b
SQL SERVER 2005 新特性---CTE
where a.SID=b.ID 
SQL SERVER 2005 新特性---CTE
--OPTION (MAXRECURSION 3);
SQL SERVER 2005 新特性---CTE--
使用 MAXRECURSION 提示来将递归级别限制为3个,防止不合理的递归 CTE 进入无限循环。
SQL SERVER 2005 新特性---CTE--
默认最大递归级别为100个.

SQL SERVER 2005 新特性---CTEUSE DEMO2
SQL SERVER 2005 新特性---CTE
GO
SQL SERVER 2005 新特性---CTE
begin transaction
SQL SERVER 2005 新特性---CTE
go
SQL SERVER 2005 新特性---CTE
DROP TABLE CURRICULUM
SQL SERVER 2005 新特性---CTE
DROP TABLE SCOREBOOK
SQL SERVER 2005 新特性---CTE
DROP TABLE STUDENT
SQL SERVER 2005 新特性---CTE
GO
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
CREATE TABLE STUDENT
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE  SID 
NVARCHAR(10),
SQL SERVER 2005 新特性---CTE  
[NAME] NVARCHAR(20),
SQL SERVER 2005 新特性---CTE  SEX    
CHAR(2),
SQL SERVER 2005 新特性---CTE  AGE    
INT,
SQL SERVER 2005 新特性---CTE  ADDRESS 
NVARCHAR(50),
SQL SERVER 2005 新特性---CTE  
PRIMARY KEY(SID)
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
GO
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
CREATE TABLE CURRICULUM
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE CURID   
NVARCHAR(10),
SQL SERVER 2005 新特性---CTE CURNAME 
NVARCHAR(30),
SQL SERVER 2005 新特性---CTE 
PRIMARY KEY (CURID)
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
GO
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
CREATE TABLE SCOREBOOK
SQL SERVER 2005 新特性---CTE(
SQL SERVER 2005 新特性---CTE  CURID    
NVARCHAR(10REFERENCES CURRICULUM(CURID),
SQL SERVER 2005 新特性---CTE  SID      
NVARCHAR(10REFERENCES STUDENT(SID),
SQL SERVER 2005 新特性---CTE  SCORE    
INT,
SQL SERVER 2005 新特性---CTE  TESTDATE 
DATETIME NOT NULL DEFAULT (getdate()),
SQL SERVER 2005 新特性---CTE  
SQL SERVER 2005 新特性---CTE)
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
GO 
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
insert into student(sid,name,sex,age,address)values('1','frj','','18','hunan')
SQL SERVER 2005 新特性---CTE
insert into student(sid,name,sex,age,address)values('2','hlk','','18','shichuan')
SQL SERVER 2005 新特性---CTE
insert into student(sid,name,sex,age,address)values('3','wang','','18','hebe')
SQL SERVER 2005 新特性---CTE
insert into student(sid,name,sex,age,address)values('4','li','','18','anhui')
SQL SERVER 2005 新特性---CTE
insert into student(sid,name,sex,age,address)values('5','zhang','','18','zhejian')
SQL SERVER 2005 新特性---CTE
insert into student(sid,name,sex,age,address)values('6','liu','','18','hunan')
SQL SERVER 2005 新特性---CTE
insert into student(sid,name,sex,age,address)values('7','den','','18','shanghai')
SQL SERVER 2005 新特性---CTE
insert into student(sid,name,sex,age,address)values('8','zhou','','18','guandon')
SQL SERVER 2005 新特性---CTE
go
SQL SERVER 2005 新特性---CTE
insert into CURRICULUM(curid,curname)  values('s1','语文')
SQL SERVER 2005 新特性---CTE
insert into CURRICULUM(curid,curname)  values('s2','数学')
SQL SERVER 2005 新特性---CTE
insert into CURRICULUM(curid,curname)  values('s3','英语')
SQL SERVER 2005 新特性---CTE
insert into CURRICULUM(curid,curname)  values('s4','程序设计')
SQL SERVER 2005 新特性---CTE
insert into CURRICULUM(curid,curname)  values('s5','数据结构')
SQL SERVER 2005 新特性---CTE
insert into CURRICULUM(curid,curname)  values('s6','离散数学')
SQL SERVER 2005 新特性---CTE
insert into CURRICULUM(curid,curname)  values('s7','网络技术')
SQL SERVER 2005 新特性---CTE
insert into CURRICULUM(curid,curname)  values('s8','微机原理')
SQL SERVER 2005 新特性---CTE
go
SQL SERVER 2005 新特性---CTE
SQL SERVER 2005 新特性---CTE
insert into SCOREBOOK(curid,sid,score)  values('s1','1',90)
SQL SERVER 2005 新特性---CTE
insert into SCOREBOOK(curid,sid,score)  values('s2','1',80)
SQL SERVER 2005 新特性---CTE
insert into SCOREBOOK(curid,sid,score)  values('s3','1',96)
SQL SERVER 2005 新特性---CTE
insert into SCOREBOOK(curid,sid,score)  values('s1','2',70)
SQL SERVER 2005 新特性---CTE
insert into SCOREBOOK(curid,sid,score)  values('s4','2',98)
SQL SERVER 2005 新特性---CTE
insert into SCOREBOOK(curid,sid,score)  values('s5','2',90)
SQL SERVER 2005 新特性---CTE
insert into SCOREBOOK(curid,sid,score)  values('s1','3',98)
SQL SERVER 2005 新特性---CTE
insert into SCOREBOOK(curid,sid,score)  values('s3','3',89)
SQL SERVER 2005 新特性---CTE
go

相关文章: