oracle中的rownum和同义词用法

 Rownum用法

   ROWNUM:表示行号,实际上此是一个列,但是这个列是一个伪列,此列可以在每张表中出现。

 1 查询全部的记录

   select rownum ,e.*
   from emp e

 2 查询前5条记录

      select rownum ,e.*
      from emp e
      where rownum <=5

 3 查询5-10条记录

      select rownum ,e.*
      from emp e
      where rownum  between 5 and  10 

  结果一条也显示不出来 

  结论:如果想进行中间的截取操作,则只能采用子查询,先查询1-10条记录,然后再查询5-10条记录

  正确结果:

      select temp.*

      from (select rownum rn,e.*
            from emp e
            where rownum <=10 ) temp 
      where temp.rn>=5 and temp.rn<=10



4 如何查询出按工资降序的5-10条记录呢

   select temp.*
   from ( 
         select rownum rn,t.*
          from (select *
                from emp 
                order by sal desc ) t ) temp 
where temp.rn>=5 and temp.rn<=10



同义词:

     之前一直存在这样一种查询语句 

      select sysdate from  dual

但是dual是一张虚表,那么此表在哪里定义列,使用system连接数据库,查询此表是否属于system用户

   1 conn system/manager  连接 

   2  select * from  tab where tname='DUAL'  查询

但是没有用查询到该表,试下超级管理员连接数据库

   1 conn sys/change_on_install as  sysdba

   2 select * from  tab where tname='DUAL' 

查询到此表 


在scott用户下面直接使用表名可以查询到,正常情况如果要访问不同用户下的表需要使用 用户名.表名,如果使用同义词就可以解决该问题.在该用户下面建立同义词去查询。

1 创建同义词

create synonym  同义词名称 for  用户名.表名

create synonym  emp for scott.emp


2 删除同义词 

drop  synonym  同义词名称

drop  synonym  emp  

只适合oracle数据库


你可能感兴趣的:(sql)