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