DUAL:一行一列 用来查询系统信息-当前时间、用户信息等
select to_char(sysdate,'yyyy-mm-dd hh24:mm:ss') 当前系统时间,user 当前系统用户,rownum,rowidtochar(rowid) from dual
ROWNUM:动态存在的伪列,给sql查询结果排序,会根据查询结果不同而变化的,
ROWID:Oracle中每一行数据在内存中物理地址,使用基于64位编码的18个字符来唯一标识一条记录物理位置的一个ID,其值并未存储在表中,不支持增删改操作。
rownum:主要用来实现分页查询
必须现有查询结果集,然后给结果动态加上一个排序列rownum,Oracle生成查询结果时,首先产生rownum=1一条记录,所以可以where rownum < n查询,而where rownum >n 查询不到结果,因为where条件不满足都给过滤掉了
select rowid, id,job,parent_id from pandac where rownum <5
rowid:主要用来实现去重
eg:
select *from pandab
--创建c表赋值b表所有数据
create table pandac as select *from pandab
--再向c表插入b表数据
insert into pandac select * from pandab
--查询c表此时数据
select *from pandac
显然有重复数据,但是它们在内存中的物理位置是不同的,
--用rowid去重 按主键分组,去掉同意id下重复数据,只留物理地址最小的一行数据
delete from pandac where rowid not in (select min(rowid) from pandac group by id)
bingo: