关于今天随笔(有关于sql)

来源:互联网 发布:手指数算法5加6怎么算 编辑:程序博客网 时间:2024/05/23 00:09

今天怎么说那,本来说是不上班的,下着雨,睡觉的好日子,可惜要上班,心情很不好,中午有个面试,还要笔试,感觉答的不好,面试的时候态度也不好,先给那两个面试的致个歉。被问的体无完肤,其实很多东西我都是会用的就是一下子不知道怎么来答了,可悲的是老用工具一些plsql的基本语法忘了,比如存储的,就是没想起来是create or re'place procedure ... (...)  is ... begin ...end;等等的,

   记录一些问题,先说说sql方面的

   1、一个表test按id排序,并查询前8条

  我是这样写的: select * from test t where rownum>9 order by id;

 他是这样问的,为啥要用rownum,不用id>9,我就懵了不知道id可以之间取前八条,就问如果id是uuid,或者是number的时候,直接用id可以吗,他说id是用序列生成的,可以得,我就不知道了,回来我试了下,如果一个表的id都是大于8的怎么可以查出来结果那,我真心搞不懂了

 2、sql优化,select * from test1 as t1 where t1.id in(select t2.id from test2 as t2);

当时感觉给表起别名很奇怪为啥要用as那,我开始怀疑我以前错过了什么,但是机子上试了下,好像确实不行,不知道怎么回事。尴尬中。。。。(求人解答是不是别的那可以这样写,本人用的是oracle)

      下面说优化,当时时间急没写,我现在的水平理解一般优化就是建索引和替换一些关键字,如in,like等

       上面的的也不一定非要替换in,在test1表数据很大而test2表数据小的时候完全可以这样写,但是当test2表数据大的时候就要用exists,可以这样来写

       select * from test1 t1 where exists (select t2.id from test2 t2 where t2.id = t1.id);

3分页 oracle写法

select * from (
      select rownum rn_, t.* from (  select * from sp_sbzl_bldyxx ) t
    ) where rn_ <= 20 and rn_ >= 0


接下来了解mybatis和hibernate的缓存机制(晚上开始)。


0 0
原创粉丝点击