子查询&分页查询

--子查询

--把1个查询结果在另一个查询中使用,就叫做子查询(把一个查询语句做一个结果集使用)

--查询:班里所有班号是4,并且姓飞的同学信息

select * from Tbstudent where stuClassId=10 and stuName like '飞%'

 

--子查询版

--当使用子查询时,必须给子查询语句最后的结果集起别名

select stuName,stuNumber,stuAddress from

(select * from Tbstudent where stuClassId=10) as tb1 where stuName like '飞%'

 

--练习:查询'17级.NET班'所有学生信息

select  * from TbClass

select stuName,stuNumber,stuAddress from Tbstudent

where stuClassId =

(select clsId from TbClass where clsName='17.net班')

 

--练习:查询所有'14数据库班'和‘15.net班’的所有同学信息

select stuName,stuNumber,stuAddress from Tbstudent

where stuClassId in

(select clsId from TbClass where clsName='15.net班' or clsName ='14数据库班')

 

--练习:删除所有姓王的同学

delete from Tbstudent where stuName like '王%'

 

delete from Tbstudent where stuId in

(select stuId from Tbstudent where stuName like '王%')

 

--子查询的高级应用:

--分页查询:每页显示一条记录

--查询第一页

select top(1) * from Tbstudent

--查询第二页

select top(1) * from Tbstudent where stuId not in

(select top(1*1) stuId from  Tbstudent order by stuId asc) order by stuId asc

 

--查询第三页

select top(1) * from Tbstudent where stuId not in

(select top(2*1) stuId from  Tbstudent order by stuId asc) order by stuId asc

 

--查询第页

--思路:排除前多少条记录,取剩下记录的前几条

 

--查询第n页,每页显示m条记录

select top(m) * from Tbstudent where stuId not in

(select top((n-1)*m) stuId from  Tbstudent order by stuId asc) order by stuId asc

 

 

你可能感兴趣的:(数据库)