ORACLE中 select t.*, t.rowid from yw_sfyjk t 和 select * from yw_sfyjk这两种写法到底有什么区别??

解决方案 »

  1.   

    前一个查询,多返回每条记录的rowid。
      

  2.   

    实测数据:CREATE TABLE T66
    (
        MyTime DATE,    
        Money  NUMBER(4)
    );
    INSERT INTO T66 VALUES(to_date('2011-12-01', 'YYYY-MM-DD'), 1);
    INSERT INTO T66 VALUES(to_date('2011-12-02', 'YYYY-MM-DD'), 2);
    INSERT INTO T66 VALUES(to_date('2011-12-03', 'YYYY-MM-DD'), 3);
    INSERT INTO T66 VALUES(to_date('2011-12-04', 'YYYY-MM-DD'), 4);
    INSERT INTO T66 VALUES(to_date('2011-12-05', 'YYYY-MM-DD'), 5);
    实测结果:
      

  3.   

    在plsql中,第一条执行完后,可以进行操作insert、update、delete。
    第二条只能查看。
      

  4.   

    感觉就多了个rowid啊,有区别吗?
      

  5.   

    没看到啥意思,是指plsql里带对结果的编辑功能么?
      

  6.   

    是的,可以这么理解。
    跟 elect * from yw_sfyjk for update 用法一样的
      

  7.   

    for update ,与 rowid都可以实现修改数据的功能。前者会锁记录,后者不会,具体差异lz可以百度看看
      

  8.   

    就是啊,感觉就多了个rowid,没有什么区别啊!
      

  9.   

    select t.*, t.rowid from yw_sfyjk t 
    --这个是可以对表中记录进行增删改操作,只锁定操作的当前行
    select * from yw_sfyjk
    --简单的查询表记录
      

  10.   

    就单单看这2句sql的话,一楼的大哥说的很清楚了!
    你用plsql developer工具的话,下面的兄弟说的很清楚了,不过这只是工具的功能,其他工具不一定能行!
      

  11.   

    select t.*, t.rowid from yw_sfyjk t  
    select * from yw_sfyjk
    如果只是查询都差不多,只是第一种多了rowid记录,也可以去掉。
    但在pl/sql工具中,第一种查询对查询结果的数据可以新增、删除、编辑,
    第二种只能查看查询的结果。
    如果有多表关联查询,第一种比较方便:
    select a.*, b.field from yw_sfyjk a, tab_test b where a.id=b.yw_id