SQL Server第四堂课 :视图查询方法,分页查询方法

create view view_1        --建立一个新的视图名
as                         --建立视图的函数
select student.sno,sname,cno,DEGREE from  student join score on student.sno=score.sno    
go
select *from view_1 where sno='1'

select *from
(select student.sno,sname,cno,DEGREE from  student join score on student.sno=score.sno) as table 2 where sno='101'
--用as定义成一个临时表,然后从表中再查询记结果。也是子查询的一种,将子查询查询出的结果集,当做一个临时表使用。
--视图只有查询作用。当对子查询中的结果进行反复查询的时候,可以减少写代码的工作量

 --分页查询,查询一个表中第几条和第几条的信息
 select*from student 
 select top 2* from student where sno not in(select top 3 sno from student)
 --后面not in是屏蔽掉当前页的前面页的内容,前面top是取屏蔽之后的数据的一页显示条数
 --两行为一页
 --分页的存储过程
 create proc fenye  ----用函数来查询分页。查询一个表中第几条和第几条的信息
 @nowye int, --当前页
 @number int --显示行数
 as          
 select top (@number) *from dingdanbiao where sno not in(select top((@nowye -1)*@number) sno from student )
 go
 exec fenye 2, 3 exec fenye 2, 3--2显示第二页,3规定每页是三行(显示第二页的三行)
 exec fenye 1,2--显示第一页,2规定每页是2行(显示第一页的两行)
 exec fenye 2,1--显示第二页,1规定是每页1行(显示第二页的一行)
 
 use xueshengxinxi
use cangku
drop proc wannengfenye
 alter proc wannengfenye
 @nowye int, --当前页
 @number int,  --显示行数
 @tablename varchar(50), --表名
 @zhujian varchar(50)  --主键
 as
 exec ('select top ('+@number+')*from '+@tablename+' where '+@zhujian+' not in
(select top (('+@nowye+'-1)*'+@number+')'+@zhujian+'from'+@tablename +')')
 go
 exec wannengfenye 2,1 ,' cangkubiao ',' cno '
exec wannengfenye --可以对任何一个有一个主键的表进行分页

--万能页查询
 alter proc wannengfenye
 @nowye int, --当前页
 @number int,  --显示行数
 @tablename varchar(50), --表名
 @zhujian varchar(50)  --主键
 as
 exec ('select top ('+@number+')*from '+@tablename+' where '+@zhujian+' not in
(select top (('+@nowye+'-1)*'+@number+')'+@zhujian+'from'+@tablename +')')
 go
 exec wannengfenye 2,1 ,' teacher ',' tno '
 --输入的参数是字符串类型,因此代码总也要用字符串类型,而返回值必须是int类型,而执行字符串类型的代码,要用exec执行
 
原文地址:https://www.cnblogs.com/275147378abc/p/4461545.html