在SELECT子句中使用“*”符号,可以查询到数据表中所有列和所有行的数据。“*”符号在有些时候也会带来不便。例如,在一张数据表中存在多达10万行的数据,用户只想查询前1万行的数据,使用“*”符号会浪费掉查询后9万行数据的时间。
为了解决这一问题,可以限制查询结果,但在不同数据库中SQL命令不尽相同,下面将分别介绍。
在SQL Server数据库中使用SELECT语句时,可以使用TOP关键字来限制最多返回多少行。TOP关键字可以指定返回表中的前n行数据,语法格式如下:
参数说明:
TOP n:指定从查询结果集中输出前n行,n是介于0和4 294 967 295之间的整数。
示例09 在SQL Server数据库中,查看goods商品信息表中的前5条数据。
输入:
输出(如图2 . 10所示):
图2.10 在SQL Server数据库中限制查询结果
由于代码中使用了“SELECT TOP 5”语句,因此只会检索前5行数据。
1.限制查询前n条数据
在MySQL数据库中需要使用LIMIT子句来限制查询结果。LIMIT子句可以对查询结果的记录条数进行限定,控制输出的行数。下面通过具体示例来了解LIMIT的使用方法。
示例10 在MySQL数据库中,查看goods商品信息表中的前5条数据。
输入:
输出(如图2 . 11所示):
图2.11 在MySQL数据库中限制查询结果
2.限制查询n条数据
使用LIMIT还可以从查询结果的中间部分取值。首先要定义两个参数,参数1是开始读取的第1条记录的编号,参数2是要查询记录的条数。
示例11 在MySQL数据库中,查看goods商品信息表从第3条数据开始的5条数据的信息。
输入:
输出(如图2 . 12所示):
图2.12 限制查询n条数据
注意
在查询结果中,第1个结果的记录编号是0,而不是1。
除此之外,还可以使用LIMIT n OFFSET m语句来限制查询结果,n是查询的条数,m是查询的起始位置。
示例12 在MySQL数据库中,查看goods商品信息表从第4条数据开始的2条数据的信息。
输入:
输出(如图2 . 13所示):
图2.13 限制查询n条数据
在Oracle数据库中需要使用ROWNUM来计算行。
示例13 在Oracle数据库中,查看goods商品信息表中的前5条数据。
输入:
输出(如图2 . 14所示):
图2.14 在Oracle数据库中限制查询结果