文章目录
T-SQL分页查询
分页查询的必要
- 针对于目标数据量庞大的查询结果,为了能够快速查询
- 分页查询有助于应用程序对数据的一个显示
如何T-SQL进行分页查询
使用NOT IN分页
SELECT TOP(5) * FROM StudentInfo WHERE StuID NOT IN(SELECT TOP(5)StuID FROM StudentInfo ORDER BY StuID) ORDER BY StuID
SELECT TOP(每页的数据量) * FROM 表名 WHERE 标识列 NOT IN(SELECT TOP(已经过去的页数)标识列 FROM 表名 ORDER BY 标识列) ORDER BY 标识列
使用IN进行分页
SELECT TOP(5) * FROM StudentInfo WHERE StuID IN
(SELECT TOP(5) StuID FROM StudentInfo WHERE StuID IN
(SELECT TOP(10) StuID FROM StudentInfo ORDER BY StuID)ORDER BY StuID DESC)ORDER BY StuID ASC
SELECT * FROM 表名 WHERE 标识列 IN (SELECT TOP(每页的数据) 标识列 FROM 表名 WHERE 标识列 IN (SELECT TOP(当前页在内的总数据) 标识列 FROM 表名 ORDER BY 标识列)ORDER BY 标识列 DESC)ORDER BY 标识列 ASC
注意:
1.在子连接查询中如果有多个排序查询,务必要注意子查询语句如果要使用ORDER BY则必须要使用TOP关键字
2. 使用IN语句进行分页前提是必须要计算好最后一页的数据
SQL分页查询面试题:
使用T-SQL语句查询出Student表中的第3-第8条数据(标识列不连续)
实现思路:
1.首先查出来前两条记录中的标识列数据
2.然后查询从第3条数据之后剩余的所有数据
3.最后在剩余的数据中取前5条数据
SELECT TOP(6)* FROM Teacher WHERE TID NOT IN (SELECT TOP(2) TID FROM Teacher ORDER BY TID) ORDER BY TID
T-SQL内置函数-聚合函数
SUM函数
返回表达式中所有值的和
SELECT SUM(Score) FROM Score WHERE SubID=1
AVG函数
计算选择字段的平均值
SELECT AVG(Score) FROM Score WHERE SubID=1
MIN函数
返回表达式的最小值
SELECT MIN(Score) FROM Score WHERE SubID=1
MAX函数
返回表达式的最大值
SELECT MAX(Score) FROM Score WHERE SubID=1
COUNT函数
返回组中项目的数量,如果用COUNT统计一列的数量如果该列有NULL值则不计算这列,因此一般使用COUNT函数统计某张表中的实体数量使用*查询
SELECT COUNT(*) FROM Student
DISTINCT函数
返回一个集合,并从指定集合中删除重复的元组
SELECT DISTINCT(StuID) FROM Score