MySQL 分页查询和存储过程

时间:2023-03-09 09:55:11
MySQL 分页查询和存储过程

一、分页查询

使用limit函数,limit关键字的用法:

LIMIT [offset,] rows;

offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。

例:分别取前40条数据和后40条数据

                                  0-起始个数  40-查询个数
--第一页 (1-1)*40,40
select * from table_name limit 0,40
--第二页 (2-1)*40,40
select * from table_name limit 40,80 --此处后面的5代指个数
--第三页 (3-1)*40,40

二、存储过程

特点:1、适合需要长期保存在数据库中

   2、需要被多个用户重复调用

3、业务逻辑相同,参数不同

4、大批量的数据的操作、插入、修改和删除

与函数的区别:

      1、函数只能返回一个值,且必须设置返回值,在存储过程可以返回多个值。

2、最大的区别:函数要放入sql语句或者某个表达式进行调用,而存储过程可以独立执行且不能被sql语句调用,直接通过call或者declare直接执行。

1、无参

 create procedure pd_selectAll3()
begin
select * from student;
end;
--调用
call pd_selectAll3();

2、带参数

 create procedure pd_findByid(in sid int)  --此处参数格式与Oracle不同
begin
select * from student where id=sid;
end;
--调用
call pd_findByid(2);

3、带输出

首先说一下,查看全局变量:

 show variables;  --查看全局变量

set对属性进行赋值操作:

 set @name2='abc';
select @name2;

执行结果:abc

4、参数带输出

 --带输出
create procedure pd_testout(out str varchar(20))
begin
select str11;
--set是赋值
set str11='今晚吃鸡’;
end;
--调用
call pd_testout(@vount2);
select @vout2;

执行结果:今晚吃鸡

5、参数既是输出也是输入

 --既是输出也是输入 inout
create procedure pd_testinout(inout str12 varchar(20))
begin
select str12;
--set是赋值
set str12='666’;
end;
--调用
set @str=123; --输入
call pd_testinout(@str);
select @str; --输出

执行结果:123