加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql实例mysql5分页查询深入探讨

发布时间:2020-12-12 02:47:55 所属栏目:MySql教程 来源:网络整理
导读:《Mysql实例mysql5分页查询深入探讨》要点: 本文介绍了Mysql实例mysql5分页查询深入探讨,希望对您有用。如果有疑问,可以联系我们。 导读:本节内容:mysql分页解析依照分页状态划分,mysql5支持动态分页和静态分页.依照分页对象划分,mysql5支持sql分页和存

《Mysql实例mysql5分页查询深入探讨》要点:
本文介绍了Mysql实例mysql5分页查询深入探讨,希望对您有用。如果有疑问,可以联系我们。

导读:本节内容:mysql分页解析依照分页状态划分,mysql5支持动态分页和静态分页.依照分页对象划分,mysql5支持sql分页和存储过程分页.mysql5分... 本节内容:
mysql分页解析

依照分页状态划分,mysql5支持动态分页和静态分页.MYSQL数据库

依照分页对象划分,mysql5支持sql分页和存储过程分页.MYSQL数据库

mysql5分页的基本原理是依靠limit字句来对查询分页.MYSQL数据库

mysql5的limit语句不支持表达式,只支持确定的整数值或者预定义参数.这是一个大陷阱!也是mysql最为变态的一个特征了,让我迷茫了很长时间才知道.不过db2、oracle等数据库分页参数都支持表达式.也是本文中的一个焦点问题.MYSQL数据库

mysql5的语句的基本格式是在select语句最后添加一个返回记录的限制数,有两个参数(取值范围均大于等于0),分别用来限制返回记录的起起始位置和返回记录的数量,.但是不包含起始位置的记录,例如,select * from tab limit 1,3; 则指挥显示第2、3、4三条记录,第1条记录不会被返回,如果要返回则应该从0开始.MYSQL数据库

mysql5的分MYSQL数据库

下面从分页对象的角度研究mysql5的分页实现,分为sql分页和存储过程分页.其中sql分页分为两种类型,一种是静态的,一种是动态的.而存储过程下只讨论动态的,静态的没有意义.MYSQL数据库

?环境:MYSQL数据库

windows xp professional 简体中文版MYSQL数据库

mysql-5.0.45-win32MYSQL数据库

?开发工具:MYSQL数据库

sql manager 2007 for mysqlMYSQL数据库

sqlyog enterprise 6.05MYSQL数据库

?测试脚本:MYSQL数据库

一个表,参看[url]http://img1.51cto.com/attachment/200708/62575_1188540717.txt[/url],打开后,里面有db2、mysql两种数据库脚本,执行mysql的.MYSQL数据库

?一、sql分页MYSQL数据库

?1、静态分页MYSQL数据库

?select xh,mldm,mlmc from dm_hy_cy limit 2,3;MYSQL数据库

?执行结果:MYSQL数据库

+----+------+------------------------------+MYSQL数据库

| xh | mldm | mlmc???????????????????????? |MYSQL数据库

+----+------+------------------------------+MYSQL数据库

|? 3 | c??? | 制造业?????????????????????? |MYSQL数据库

|? 4 | d??? | 电力、燃气及水的生产和供应业 |MYSQL数据库

|? 5 | e??? | 建筑业?????????????????????? |MYSQL数据库

+----+------+------------------------------+MYSQL数据库

?截图如下:MYSQL数据库

mysql5分页查询深入探讨

MYSQL数据库

??2、动态分页MYSQL数据库

?prepare stmt1 from 'select xh,mlmc from dm_hy_cy limit ?,?';MYSQL数据库

set @start=2;MYSQL数据库

set @size=3;MYSQL数据库

execute stmt1 using @start,@size;MYSQL数据库

?说明:MYSQL数据库

?预制语句的sql语法基于三个sql语句:MYSQL数据库

?prepare stmt_name from preparable_stmt;MYSQL数据库

stmt_name 是预处理语句的标识,是一个将要执行的sql语句.里面如果有参数,则用“?”替换,“?”在这里也叫占位符.类似jdbc预处理sql语句.MYSQL数据库

?execute stmt_name [using @var_name [,@var_name] ...];MYSQL数据库

执行一个预处理语句stmt_nameusing表示使用了动态变量(变量名前有“@”标识符),@var_name [,@var_name] ... 是参数列表,按顺序赋值给预处理sql中的(占位)参数.MYSQL数据库

?{deallocate | drop} prepare stmt_name;MYSQL数据库

删除或者分配存储单元给预处理语句.MYSQL数据库

?说明:在mysql5中,可以使用动态变量,动态变量的类型是不确定的,可以多次赋不同类型的值,动态变量的类型取决于其值的具体类型.动态变量定义的定义和使用就像随地大小便一样,有需要就当即办理.定义的方式也很简单:set @var_name=...,在定义的时候就给定了值.MYSQL数据库

?执行结果和1一样,截图如下:MYSQL数据库

mysql5分页查询深入探讨

MYSQL数据库

?二、存储过程分页MYSQL数据库

?-- 设定语句定界符为 $$MYSQL数据库

delimiter $$MYSQL数据库

-- 预防性删除存储过程MYSQL数据库

drop procedure if exists testdb.sp_pagination$$MYSQL数据库

?-- 声明创建存储过程MYSQL数据库

create procedure sp_pagination(in in_start integer(11),in in_size integer(11))MYSQL数据库

-- ------------------------------------------MYSQL数据库

-- 说明:mysql5存储过程分页MYSQL数据库

-- 语言:mysqlMYSQL数据库

-- 作者:熔 岩MYSQL数据库

-- 日期:2007-9-1MYSQL数据库

-- ------------------------------------------MYSQL数据库

beginMYSQL数据库

?-- 定义两个动态变量,接收存储过程中的分页参数MYSQL数据库

set @start=in_start;MYSQL数据库

set @size=in_size;MYSQL数据库

?-- 定义预处理sql查询语句MYSQL数据库

prepare stmt from 'select mldm,?';MYSQL数据库

?-- 执行预处理语句,并用动态变量替换参数占位符MYSQL数据库

execute stmt using @start,@size;MYSQL数据库

?endMYSQL数据库

-- 存储过程声明结束MYSQL数据库

$$MYSQL数据库

-- 设定语句定界符为 “;”,以保证后来的以分号结尾的sql正常执行MYSQL数据库

delimiter ;MYSQL数据库

?存储过程部署截图:MYSQL数据库

mysql5分页查询深入探讨

MYSQL数据库

?存储过程定义好了后编译以下.MYSQL数据库

然后用命令执行:MYSQL数据库

call sp_pagination(2,3);MYSQL数据库

返回结果如下:MYSQL数据库

mysql5分页查询深入探讨

MYSQL数据库

?反面教材:如果不使用预处理sql,不管你怎么搞,这个动态根据传递参数分页都是无法实现的(至少目前我这个环境下如此,如果你有兴趣可以挑战一下看看).MYSQL数据库

?下面我就给出我刚开始用db2的经验实现mysql5存储过程分页的例子,结果当然是失败了.现在给出来,大家看看:MYSQL数据库

?delimiter $$MYSQL数据库

drop procedure if exists testdb.sp_pagination$$MYSQL数据库

create procedure sp_pagination(in in_start integer(11),in in_size integer(11))MYSQL数据库

-- ------------------------------------------MYSQL数据库

-- 说明:反面教材,切勿模仿!mysql5存储过程分页MYSQL数据库

-- 语言:mysqlMYSQL数据库

-- 作者:熔 岩MYSQL数据库

-- 日期:2007-9-1MYSQL数据库

-- ------------------------------------------MYSQL数据库

beginMYSQL数据库

?-- 直接利用调用参数在limit子句中用MYSQL数据库

select mldm,mlmc from dm_hy_cy limit in_start,in_size;MYSQL数据库

?endMYSQL数据库

$$MYSQL数据库

delimiter ;MYSQL数据库

总结:mysql5存储过程分页目前我所知道就这几种,也许mysql会在将来新版本中支持limit的表达式参数,但眼前的是要办理问题.希望这篇文章能对您mysql过程分页提供一种办理方案,节省摸索研究的时间.MYSQL数据库

欢迎参与《Mysql实例mysql5分页查询深入探讨》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读