1、oracle,假如现在有10000条记录,怎么进行分页,如何进行优化呢?
2、现在有员工信息还有其职位,现在想让你设计一下.
   要求 :1、当员工职位提升的时候基本工资要有相应 的调整。
          2、当年初的时候每个人的员工工资都要加上50元。
   解析: 主要考察面向对象的理解。 不明白什么意思。
3、假如有一张员工表,里面有姓名相同的员工,查询出姓名重复的员工的姓名。(oracle)
4、现在有表学生表、图书表。图书表有一个字段引用学生表(bid),学生表里面有一个状态,删除状态是0的图书表里对应的 信息。
   解答:delete from 图书表 where bid in(select id from 学生表 where state = 0);
        面试官说效率低,有没有更高效 的方法。

解决方案 »

  1.   

    1.利用存储过程可以进等分页处理,但较烦锁。最为简单的方法是利用pl/sql的report功能。可在此表上建立主关键字和索引。2.设计员工表时增加一字段为职位,在以后可以方便地写1,2的sql。3.select emp_name,count(*) aa from emp where aa>1 group by emp_name;4.使用trigger,当修改学生表的state=0时,自动删除图书表里的信息。
     
      

  2.   

    补充一下:1.可以利用pl/sql的report方便地将查询数据导入excel中。
      

  3.   

    1.不明白这里的分页是指什么?2.同LS。员工表里增加职位等级ID字段,对应于职位表里的职位等级ID,并且职位表里每个职位等级对应一个工资金额。这样员工职位提升时直接可查到所对应的工资。同时每年初只需对职位表里的每项工资加50即可。
      这里用了两个表,不设及到面向对象。如果只准用一个表的话,那就面向对象了,要建个TYPE,来保存职位和工资。3.4.你用exists效率要高些。
      

  4.   


    1: 写存储过程拼动态SQL语句,用ROWNUM实现:用多少数据取多少数据。相关字段建索引分析表。2:两个需求都是用要用触发器实现。3:
    SELECT ENAME
      FROM EMP
     GROUP BY ENAME
    HAVING COUNT(1) > 1; 4:
    DELETE FROM BOOK B
     WHERE EXISTS (SELECT 1
                     FROM STUDENT S
                    WHERE B.BID = S.ID
                      AND STATE = 0);他不可能是说用EXISTS比用IN效率高吧?如果内外两个表的数据量都很大的时候,用IN的效率比EXISTS高。
      

  5.   

    pl/sql的report,可以在具体说明一下吗?
      

  6.   

    打开pl/sql,->report window->输入查询语句,执行查询->单击右中位置的绿色图标->(导入至)excel。
      

  7.   

    帮忙顶一下,让了解的人来解答.btw:他妈的,我还是CSDN论坛首页的常驻专家门诊(JAVA板块)呢,居然在JAVA板块既不能发新贴,也不能回复。
    btw:郁闷,加的好友太多了,现在加好友都是非法请求了。连好友页面也打不开。连私信页面也打不开。
    btw:CSDN当时没有测试过加好友很多的情况的吗?郁闷。现在一点加好友就出错。
      

  8.   

    1、同2楼
    2、同2楼,不过,面向对象从这里体现太费劲了
    3、select emp_name,count(*)  from emp  group by emp_name having count(*) > 1
    4、in exists具体哪个相率高,不好说。
      如果数据量很大,不如用create table a as select * from ....... 
                         truncate table
                         insert select ...