一、limit语句含义

常见场景

在执行报错注入或者布尔盲注时一般都会碰到
image.png
直译过来意思就是”查询返回信息超出一行“,因为group_concat()函数最大长度为64位,我们插入的语句和查询的返回的所有数据库的字符加起来超过了一行最大长度64位,没法一行输出,就需要我们将查询结果一个一个输出,这里就需要用到限制语句limit了。

使用查询语句的时候,经常要返回前几条或者中间某几行数据的情况,许多SQL数据库都提供了limit或者类似的功能

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。limit 1 ≈ limit 0,1

如何理解?翻译翻译

上面的含义说人话就是limit n,m第一个参数偏移量代表游标卡尺偏移量,第二个参数代表要获取偏移量后门的多少条数据,所以limit 0,1表示从第一行开始遍历,只取第一行的一条数据即可。limit 1,1表示从第二行开始遍历,只取第二行的一条数据即可。
原理是不是感觉有些熟悉?没错,跟C语言数组一毛一样,从0开始,一维数组一个参数,二维数组两个参数,二维数组【0】【1】与一位数组【1】结果相同。
偏移量在这里就是从第几行开始查看数据,limit3,4就是从第四行(因为是从0开始的,0就是第一行)开始查看数据,要查看四行数据
image.png

二、示例

示例一

image.png
limit N表示以一维数组的形式直接查询N行数据
image.png
limit N,M 第一个参数表示从第N行数据开始查,第二个参数表示查M条数据
image.png

示例二

MySQL中所有数据库名如下:
information_schema,challenges,mysql,performance_schema,security,sys

limit 0,1得到第一个数据库名
注意:这里如果如第二个图一样返回查询数据大于一行则重复提交即可,属于语句执行问题
image.png
image.png
limit 1,1第二个数据库名
image.png
limit 2,1第三个数据库名
image.png

问题

一共六个数据库,我们输入到5,1即可全部遍历,那么如果输入到6,1超过最大行会怎样呢?超出之后为什么会是那种情况呢?也可以结合数组去思考,与数组原理一样。