Oracle和MySql的分页查询区别:
 
  Oracle的分析查询,之前Oracle的分页是使用伪列 ROWNUM 结合子查询实现,mysql的分页更简单,直接使用 LIMIT 关键字就可以实现了。
要实现分页查询需要知道两个参数:
currentPage: 表示当前页(cp)
lineSize:表示每页显示的数据量(ls)
oracle的分页示例:
显示第一页,每页显示三条数据
SELECT *
  FROM (SELECT ROWNUM rn,empno,ename,job,mgr,hiredate,comm,deptno
  FROM emp
  WHERE ROWNUM<=3) temp
  WHERE temp.rn>=1;
显示第二页,每页显示三条数据
SELECT *
  FROM (SELECT ROWNUM rn,empno,ename,job,mgr,hiredate,comm,deptno
  FROM emp
  WHERE ROWNUM<=6) temp
  WHERE temp.rn>=4;

显示第三页,每页显示三条数据

SELECT *
  FROM (SELECT ROWNUM rn,empno,ename,job,mgr,hiredate,comm,deptno
  FROM emp
  WHERE ROWNUM<=9) temp
  WHERE temp.rn>=7;

通过以上三个例子我们可以总结出知道了当前页(cp)和每页显示的数据量(ls),就可以计算出要从数据库中第m条查询到第n条数据的公式:

m=(currentPage-1) * lineSize+1

n=currentPage * linesSize

//***************************************分割线**********************************************//
mysql的分页查询:
SELECT* FROM emp LIMIT m,ls
 
查询第一页,每页显示三条数据
SELECT * FROM emp LIMIT 0,3
查询第二页,每页显示三条数据
SELECT * FROM emp  LIMIT 3,3
查询第三页,每页显示三条数据
SELECT * FROM emp LIMIT 6,3
根据上面的结果可以总结出公式:已知当前页 currentPage和每页显示的数据量 lineSize
  m = (currentPage - 1) * lineSize
ls = lineSize
总结:
mysql 的分页查询是很容易实现,基本的语法
SELECT * FROM 数据表 LIMIT m,n
 
mysql 数据表中的数据索引是从0开始的。
通过上面的示例可以总结出公式:已知当前页currentPage,和每页显示的数据量lineSize
startrow=(currentPage-1) * lineSize
ls=lineSize
//************************************************分割线**********************************************************//
PL/SQL的基本概念
  PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。使用PL/SQL语句块中的SQL语句更加高效,原因主要是这样做可以大幅降低网络流量,应用程序也会变得更加高效。
  PL/SQL是Oracle数据库对SQL语句的扩展,在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算,PL/SQL只有Oracle数据库有。

优化性能:

  PL/SQL以整个语句块发送给服务器,这个过程在单次调用中完成,降低了网络拥挤。而如果不使PL/SQL,每条SQL语句都有单独的传输交互,在网络环境下占用大量的服务器时间,同时导致网络拥挤。

可重用性:

PL/SQL能运行在任何ORACLE环境中(不论它的操作系统和平台),在其他ORACLE能够运行的操作系统上无需修改代码。

模块化:

  每个PL/SQL单元可以包含一个或多个程序块,程序中的每一块都实现一个逻辑操作,从而把不同的任务进行分割,由不同的块来实现,块之间可以是独立的或是嵌套的。

示例:第一个pl/sql程序
BEGIN --表示开始过程
  NUULL; --过程代码
END; --过程结束
/

输出 ‘hello world’

--开启打印功能

SET SERVEROUTPUT ON;

BEGIN --表示开始过程

DBMS_OUTPUT.put_line('hello world'); --过程代码

END; --过程结束

/

定义变量

DECLARE

v_num NUMBER; --声明一个全局变量

BEGIN --表示过程开始

DBMS_OUTPUT.put_('变量的值是:'|| v_num); --过程代码

END; --过程结束

/

字符串的连接使用的不是‘+’而是‘||’

全局变量的声明放在DECLARE关键字之后

如果声明了变量但是没有赋值则默认是空

为变量赋值:

DECLARE

v_num NUMBER; --定义了变量

BEGIN --表示过程开始

v_num:=30; --为变量赋值

DBMS_OUTPUT.put_('变量的值是:'|| v_num); --过程代码
END;  --过程结束
/

上面为变量赋值代码可以在DECLARE后面声明变量的时候给出默认值,如果在BEGIN 之后没有为变量赋新的值,则按照默认值输出。

下方是一个完整代码示例:

根据雇员的编号查询出雇员的名字,要求编号从键盘输入。

DECLARE
v_empno NUMBER; --保存雇员编号
v_ename VARCHAR2(100); --保存编号
BEGIN --表示开始过程
--在键盘输入雇员编号
DBMS_OUTPUT.put_line('请输入编号:');
v_empno:=&empno;
--开始查询
SELECT ename INTO v_ename
FROM emp
WHERE empno=v_empno;
DBMS_OUTPUT.put_line('编号是:'||v_empno || ' 名字是:'||v_ename); --过程代码
END; --过程结束
/

//*********************************************分割线***************************************************//



 

Oracle和MySql的分页查询区别和PL/SQL的基本概念的更多相关文章

  1. MySQL、SqlServer、Oracle三大主流数据库分页查询

    在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法.可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应用 ...

  2. oracle 的分页查询与mysql 的分页查询

    oracle 的分页查询: select * from (select o.*,rownum rn  from Persons o) where rn >40 and rn <=60 : ...

  3. MySQL、SqlServer、Oracle三大主流数据库分页查询 (MySQL分页不能用top,因为不支持)

    一. MySQL 数据库 分页查询MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它 ...

  4. oracle sqlserver mysql数据库分页

    1.Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM tabl ...

  5. oracle count 百万级 分页查询记要总数、总条数优化

    oracle count 百万级 分页查询记录总数.总条数优化 oracle count 百万级 查询记录总数.总条数优化 最近做一个项目时,做分页时,发现分页查询速度很慢,分页我做的是两次查询,一次 ...

  6. Mysql中分页查询两个方法比较

    mysql中分页查询有两种方式, 一种是使用COUNT(*)的方式,具体代码如下 1 2 3 SELECT COUNT(*) FROM foo WHERE b = 1;   SELECT a FROM ...

  7. 【SQL】Oracle和Mysql的分页、重复数据查询(limit、rownum、rowid)

    上周三面试题有两道涉及Oracle的分页查询,没有意外地凉了,现在总结一下. · Mysql mysql的分页可以直接使用关键字limit,句子写起来比较方便. 语法: ① limit m,n -- ...

  8. MySQL的分页查询及Oracle分页查询

    MySQL: Select ... from ...where ...order by...limit start,pageNum 例:比如从 取 个数据 , String sql = )*pageR ...

  9. 说说mysql和oracle他门的分页查询,分别是怎么实现的?

    MySQL: 1.MySQL数据库实现分页比较简单,提供了 LIMIT函数.一般只需要直接写到sql语句后面就行了. 2.LIMIT子 句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两 ...

随机推荐

  1. log4net通过代码控制按分类输出

    应用场景: 比如我们系统有5个任务,每个任务都是独立的流程,按照传统的方式这些流程的数据会输出到一起,这无疑给我们排查问题增加了难度,因为我们需要的是每一个任务一个独立的输出文件,比如任务A输出到lo ...

  2. Spring Security(3):配置与自动配置的介绍及源码分析

    基于注解的配置(Java Configuration)从Spring Security 3.2开始就已经支持,本篇基于Spring boot注解的配置进行讲解,如果需要基于XML配置(Security ...

  3. IndemindSDK数据采集程序

    目录 Indemind相机数据采集 Indemind相机数据采集 最近做一些实验需要自己采集一些数据玩玩,打算用之前买的indemind双目模组,实际用的时候感觉官方提供的采集程序不太好用,于是打算自 ...

  4. 详解Linux开源安全审计和渗透测试工具Lynis

    转载自FreeBuf.COM Lynis是一款Unix系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议.这款软件会扫描一般系统信息,脆弱软件包以及 ...

  5. 关于sws安全助手企业政府版的停止维护以及无法购买(官方已公开永久可用免费序列号并将软件开源)

    sws安全助手企业政府版官方公布的永久可用系列号:XGVPP-NMH47-7TTHJ-W3FW7-8HV2C 安装程序官网下载地址:https://swssoftwareshare.gitee.io/ ...

  6. sed工具的基本用法

    sed文本处理工具的用法: 用法1:前置命令 | sed [选项] '条件指令' 用法2:sed [选项] '条件指令' 文件.. .. 认识sed工具的基本选项 sed命令的常用选项如下: -n(屏 ...

  7. c++学习笔记_5

    前言:本笔记所对应的课程为中国大学mooc中北京大学的程序设计与算法(三)C++面向对象程序设计,主要供自己复习使用,且本笔记建立在会使用c和java的基础上,只针对与c和java的不同来写 继承 继 ...

  8. Odoo13 新变化:存货核算

    Odoo13将于2019年10月发布,本次发布也包含了大量的改进,例如,对存货核算的重构. 去掉了 产品历史价格product.price.history ,增加了 stock valuation l ...

  9. Spring 控制器重定向

    1.示例 return "redirect:/allUser"; redirect是跳转的意思后面是跳转的页面

  10. 六扇门团队作业 ——《DorMi宿舍管理系统需求分析》

    团队作业 --<需求分析> 一.格式描述 这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 团队名称 六扇门 这个作业的目标 通过对用户 ...