关于sql的一点经验

来源:互联网 发布:球状闪电刘慈欣 知乎 编辑:程序博客网 时间:2024/05/09 14:11

      lz那时刚毕业,刚投了简历有家公司让我去上班,当时觉得有公司要我了,那个欣喜若狂,后来才知道那是一家外包公司,项目组换了又换,这是我再一家证券公司时积攒的一点sql经验,现在拿出来和大家分享。

     至于他们用的工具我就不说了。在整个sql过程中接触最多的是这句sql->a.branch_no in (select jgid  from   t_jg connect by sjjgid = prior jgid start with jgid = '||v_jgid||')';    因为以前也没有sql经验 所以看到这句时真的有点不知所云的感觉,于是lz就百度了下(大致是一个表里面有两个字段 一个是父节点一点事父节点下的孩子 其实就是一个遍历树的过程)对于那些查询分公司 分公司下的营业部的挺实用的。还有就是有日期参数,可是lz怎么执行也不行 说sql有误经过多次试验才摸索到->原来->按日期查询的时候竟然要用三个单引号,sql的脾气真是摸不透。还有 如果你在执行sql过程中一直报->"缺失右括号"这个错 可能是拼凑字符串拼错了。下面说下排名函数吧:主要是有这几种1:row_number()从1开始,为每一条分组记录返回一个数字(select (row_number() over(order by xx desc)) px from table;)先降序排序 在返回一个数字。2:rank()RANK 函数返回一个数字在数字列表中的排位, 数字的排位是其大小与列表中其他值的比值().

select * from
(
(select * from tablle1 t1,table2 t2 where t1.uid=t2.id) ta1,
table2 ta3,
table4 ta4 where ta1.yyb=ta3.yyb and ta3.dyyh=ta4.id
 )

为什么要贴上面一段sql 仔细看看 其实他是比较复杂一点的sql结构了 把表、查询的结果集联合起来,结构简单明了。

select * from table1 t1,table2 t2 where t1.id=t2.uid(+)(后面带个加号表示左连接即:左边的数据全显示);

select * from table1 t1,table2 t2 where t1.id(+)=t2.uid(后面带个加号表示右连接即:右边的数据全显示)。

这个是查看存储过程错误的

这个是改变工作空间的编码配置下环境变量就可以了。

这是调用存储过程的方式 declare
out_cur types.cursorType;
begin
   xxx(out_cur,'20120406','20120411','','');
 end;

这是一些函数:

coalesce(a,0) 如果a的值为null则显示0;
decode(a,1,0,1)如果a的值为1则显示0否则显示1
nvl(a,b)如果a不为null则显示a否则显示b

CAST(id AS VARCHAR(20));

大概lz用到的就这么多当然了这是是数据库知识的冰山一角 更多的知识等待大家去总结 去挖掘 去学习 去掌握!