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数据库