--子查询
--把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