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

posted @ 2018-08-28 20:27  echola_mendes  阅读(2446)  评论(0编辑  收藏  举报