MySQL 分页查询和存储过程
一、分页查询
使用limit函数,limit关键字的用法:
LIMIT [offset,] rows;
offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。
例:分别取前40条数据和后40条数据
1 0-起始个数 40-查询个数 2 --第一页 (1-1)*40,40 3 select * from table_name limit 0,40 4 --第二页 (2-1)*40,40 5 select * from table_name limit 40,80 --此处后面的5代指个数 6 --第三页 (3-1)*40,40
二、存储过程
特点:1、适合需要长期保存在数据库中
2、需要被多个用户重复调用
3、业务逻辑相同,参数不同
4、大批量的数据的操作、插入、修改和删除
与函数的区别:
1、函数只能返回一个值,且必须设置返回值,在存储过程可以返回多个值。
2、最大的区别:函数要放入sql语句或者某个表达式进行调用,而存储过程可以独立执行且不能被sql语句调用,直接通过call或者declare直接执行。
1、无参
1 create procedure pd_selectAll3() 2 begin 3 select * from student; 4 end; 5 --调用 6 call pd_selectAll3();
2、带参数
1 create procedure pd_findByid(in sid int) --此处参数格式与Oracle不同 2 begin 3 select * from student where id=sid; 4 end; 5 --调用 6 call pd_findByid(2);
3、带输出
首先说一下,查看全局变量:
1 show variables; --查看全局变量
set对属性进行赋值操作:
1 set @name2='abc'; 2 select @name2;
执行结果:abc
4、参数带输出
1 --带输出 2 create procedure pd_testout(out str varchar(20)) 3 begin 4 select str11; 5 --set是赋值 6 set str11='今晚吃鸡’; 7 end; 8 --调用 9 call pd_testout(@vount2); 10 select @vout2;
执行结果:今晚吃鸡
5、参数既是输出也是输入
1 --既是输出也是输入 inout 2 create procedure pd_testinout(inout str12 varchar(20)) 3 begin 4 select str12; 5 --set是赋值 6 set str12='666’; 7 end; 8 --调用 9 set @str=123; --输入 10 call pd_testinout(@str); 11 select @str; --输出
执行结果:123