文档章节

Orcale

当空皓月
 当空皓月
发布于 2014/07/09 22:55
字数 860
阅读 135
收藏 5

1、分页

不管手机端需不需要分页,我这个接口都通用,并且要查询效率高
sql语句怎么写?pageNamber怎么用?数据怎么返回?

分页策略一:先查询出全部数据然后再分页。getData?page=1

mSublist=list.sublist(start,end);mSublist=list.sublist(30*(page-1)+1,30*page);如果要查询全部 只需要start=end=0
然后返回这个mSublist  这样的话需要写一个分页的工具类。如果数据量特别大,全部都查出来再分页效率很低。

分页策略二:

select * from table where row_num between 30*(pageNamber-1)+1 and 30*pageNambe;

pn=1   1-30             
pn=2  31-60

SELECT * FROM(SELECT T.*,ROWNUM RN  FROM U001 T) WHERE RN >=30*(pageNamber-1)+1 AND RN <= 30*pageNambe 这也是可以的

果没有分页需求,这个不通用啊。写两个sql语句,如果pageNumber<1只写全部查询,否则按照第几页显示

orcale高效分页:http://blog.sina.com.cn/s/blog_8604ca230100vro9.html

现在要动态的变化分页查询的条件,比如pageNow 这个变量表示的是当前是第几页,

oracle分页有通用写法,假设一页5行
select * from (
    select t.*,rownum from (
        select * from table1 where condition order by column) t )
    where rownum>(pangeNow-1)*5 and rownum<=(pageNow)*5

如果基础查询不需要排序,可以省掉一层嵌套
select * from (
    select t.*,rownum from table1 t where condition )
    where rownum>(pangeNow-1)*5 and rownum<=(pageNow)*5

Oracle:方法一:SELECT * FROM(SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40)WHERE RN = 21;方法二:SELECT * FROM(SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A)WHERE RN between 21 and 40
公认第二种方法效率没有第一种高。原因是第二种要把子查询执行完,而第一种方法子查询执行到Rownum=40后就结束了

http://zhidao.baidu.com/link?url=I7ro5MoUtvQDafwwuN9BOYOUjCnwS3qbPAkNviHrvE3tN5tg68l7M15S6lDlyqoW9kNqfwh_jFKiwhPjK098Fa

2、关联查询:

select s5.Ma003,s5.Ma004,s5.Ma005,u1.Ma008 from S005 s5,U001 u1 where s5.ma005=u1.ma001

对上条语句优化:

 select s5.MA001, s5.MA002, s5.MA003, s5.MA004, s5.MA005, s5.MA006, s5.MA007,u1.Ma008
         from S005 s5 left join U001 u1 on s5.ma005=u1.ma001
       where s5.MA002 ='5973a2ad-64ad-4fc8-b94e-440d0c67e0bc' and s5.Ma005='be2666a4-85d5-4d70-86c2-b854f457f3cd'  order by s5.MA004 desc

多表关联:

select  v.areaid ,v.corpid,a.areaname,c.corpname  from TMONITORAREA_CORP v
left join tmonitorarea a on a.areaid=v.areaid
left join tmonitorcorp c  on c.corpid=v.corpid

3、时间段区间查询:

select *
from s002 where ma004 between to_date('2014-7-1 07:00:00','yyyy-mm-dd hh:mi:ss')
and to_date('2014-7-16 07:00:00','yyyy-mm-dd hh:mi:ss')

4.常用sql语句及案例(oracle)

http://www.cnblogs.com/wishyouhappy/p/3700683.html

ORACLE 博客文章目录(2014-07-19更新)

http://www.cnblogs.com/kerrycode/p/3256266.html

5.子查询与关联查询的区别?

http://zhidao.baidu.com/link?url=qoqDwhuCyM13qy6HVj07lu5pfj3jwDLZNAeBdAKgd1W2amw3PANGl3Wnc6ML8VIAdF8-j7Q2P-xHfB295Zine

6.SQL Server 存储过程

http://www.cnblogs.com/hoojo/archive/2011/07/19/2110862.html    关注此人的博客,写的挺不错的!

7、Case When Then多条件判断

 select  count(case when  (status = '未连接' or status = '故障' or status = '传感器故障' or status = '通讯超时' or status = '网络故障') then 1 else null end) faultTotal from v_trealtimedatainfo_p_m_c

count(case when status = '正常' then 1 else null end) normalTotal

 

语法:

CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
WHEN 条件4 THEN 结果4
.........
WHEN 条件N THEN 结果N
ELSE 结果X
END

Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END

例如:

SELECTid, name, cj, (CASE WHEN cj < 60 THEN '不及格' WHEN cj BETWEEN 60 AND 90 THEN '良好' WHEN cj > 90 THEN '优秀' END) AS 状态
FROMstud

© 著作权归作者所有

上一篇: List
下一篇: JDBC
当空皓月
粉丝 14
博文 179
码字总数 67070
作品 0
郑州
私信 提问
在无orcale环境的本地,向远程orcale数据库导入本地的dmp文件

本地服务器没有安装orcale数据库和客户端,也没有安装plsql。所以cmd的imp命令不能用。 本地安装orcale客户端 下载地址,安装,配置path,安装后可以用imp命令导入dmp文件。 安装instantclie...

落幕之殇
2017/08/05
0
0
在无orcale环境的本地,向远程orcale数据库导入本地的dmp文件

本地服务器没有安装orcale数据库和客户端,也没有安装plsql。所以cmd的imp命令不能用。 本地安装orcale客户端 下载地址,安装,配置path,安装后可以用imp命令导入dmp文件。 安装instantclie...

落幕之殇
2017/05/11
0
0
windows 下orcale 11g安装和配置

下载程序; 安装程序; a.主要用于本地的程序调试,安装的是桌面版; b.设置好密码等直接下一步。 把程序的bin目录加入到系统的path中; 安装完毕,现在cmd运行下sqlplus 输入帐号和密码,进...

落幕之殇
2017/05/08
0
0
ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值

就昨天问题 更正一下 我是将页面的输入值保存在自己定义的xml里面 然后将xml保存到数据库的某个字段 该字段是CLOB型 在Orcale里insert可以添加 在Java用dao添加就不行 求大神继续解释 Orcale...

步步惊心
2012/07/19
530
0
Oracle 在64位机器上使用plSQL连接Oracle的问题(SQL*Net not properly installed)

问题: 在64位机器上了64位的oracle客户端。 然后装上PL/SQL Developer,但是连接oracle老报这个错: Initialization error SQL*Net not properly installed OracleHomeKey: OracleHomeDir: ...

老朱教授
2017/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
6
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
7
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部