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执行