Java
递归
—— 递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法表示问题的解。
Eg:利用递归算法求阶乘
public staticintmul(intn){
if(n==1){
return 1;
}
return n*mul(n-1);
}
Oracle
合并查询
有时在实际应用中,为了合并多个select语句的结果,可以使用集合操作符union,union all,intersect,minus
union取并集
union操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。
示例:
selectename,sal,job from emp where sal>3500 union
selectename,sal,job from emp where job='MANAGER';
union all取所有
union all操作符与union相似,但是它不会取消重复行,而且不会排序。
示例:
selectename,sal,job from emp where sal>3500 union all
selectename,sal,job from emp where job='MANAGER';
intersect取交集
intersect操作符用于取得两个结果集的交集。
selectename,sal,job from emp where sal>3500 intersect
selectename,sal,job from emp where job='MANAGER';
minus取差集
minus操作符用于取得两个结果集的差集,它只会显示存在第一个集合中,而不存在第二个集合中的数据。[即只取图下1黑色部分]
selectename,sal,job from emp where sal>3500 minus
selectename,sal,job from emp where job='MANAGER';
分页查询
Oracle分页查询
oracle中的表,除了我们建表时设计的各个字段,其实还有两个字段分别是ROWID(行标示符)和ROWNUM(行号),即使我们使用DESCRIBE命令查看表的结构,也是看不到这两个列的描述的,因为,他们其实是只在数据库内部使用的,所以也通常称他们为伪列(pseudo column)。
rownum:顾名思义就是行数/行号;它会根据返回记录生成一个序列化的数字。
rowid:就是编码/编号/唯一识别号,所以他是类似“AAAR8gAAEAAAAErAAK”的编号,注意它是没有先后顺序的,也就是说它和数据入库时间没有任何关系。rowid我们一般用不到,Oracle数据库内部使用它来存储行的物理位置,是一个18位的数字,采用base-64编码。
分页查询语法模版:
select t2.* from
( select t1.*, rownum rn from
(select * from 表名) t1
where rownum<=大范围(取到多少条数据) ) t2
where rn>=小范围(从第几条数据开始取);
eg:将emp表按照工资从高到低排序,每页显示3条数据,现查询第3页信息
select * from
(select e1.*,rownum rn from
(select * from emp order by sal desc) e1
where rownum<=9) e2
where e2.rn>=7;
PS:
oracle分页查询是通过三层筛选法进行查询的。每一次都可以带where条件来对要查询的信息进行筛选。
mysql分页查询
语法:
select * from 表名 where 条件 limit start,count;
解析:
start:从第几条开始
count:取几条数据