在oracle数据库表中没有添加rowid字段为啥会出现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在oracle数据库表中没有添加rowid字段为啥会出现相关的知识,希望对你有一定的参考价值。
rowid 是 oracle 数据库表中的伪列, rowid 首先是一种数据类型,它唯一标识一条记录物理位置, 基于64位编码的18个字符显示。因为 rowid 是伪列, 所以并未真的存储在表中,但可以从表中查询,但不支持插入,更新,删除它们的值。其他的伪列还有 rownum (行号)追问
将rownum设为主键时建立几条模拟数据后当根据rownum查询时只能查询出来第一条记录,后来的记录则呢么就查不到了啊,谢谢了。
追答rownum 是伪列,你不可能把 rownum 作为表的主键的。需要注意的是 rownum 是指查询结果集的行号,而不是表的行号。比如:
select * from tab where rownum=9; 即使 tab 表中有很多记录,但这个 sql 语句是永远也查不出数据的, 因为你指定了 rownum =9 作为查询条件,因而是单行查询,查询结果最多只能返回一条记录,也就是说 rownum 最多=1, 是不可能等于9 的。
将rownum设为主键时建立几条模拟数据后当根据rownum查询时只能查询出来第一条记录,后来的记录则呢么就查不到了啊,谢谢了。
参考技术B 自带的可以唯一键使用追问
将rownum设为主键时建立几条模拟数据后当根据rownum查询时只能查询出来第一条记录,后来的记录则呢么就查不到了啊,谢谢了。
oracle数据库基本操作
一、数据基本类型
1、oracle的伪列
Oracle 中伪列就像一个表列,但是它并没有存储在表中伪列可以从表中查询,但不能插入、更新和删除它们的值常用的伪列有ROWID和ROWNUM;
ROWID 是表中行的存储地址,该地址可以唯一地标识数据库中的一行,可以使用 ROWID 伪列快速地定位表中的一行
ROWNUM 是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数;
select rowid,rownum,id,name,price from goods;
2、数据定义语言(DDL)
create----alter----drop----truncate
3、数据操纵语言(DML)
insert---select---delete---update
4、事务控制语言(TCL)
commit---savepoint---rollback
5、数据控制语言(DCL)
grant---revoke
二、oracle数据库基本简介
1、表名的长度最大为30个字符;
2、同一用户模式下,不同的表不能有相同的名称;
3、oracle数据库中的表名、列名、用户名和其他对象名,不区分大小写,系统会自动转成大写;
三、数据库基本操作
1、选择无重复的行
DISTINCT字句筛除结果集中内容全部相同的行,仅保留一行;
2、带条件和排序的select命令(与mysql类似)
select stuNo,stuName,stuAge from student where stuAge>16 order by studentName asc,stuAge desc;
3、oracle数据库列别名的添加与mysql类似
create table newStudent as select * from student
4、也可以只复制表结构,不复制数据
create table newStudent as select * from student where 1=2
三、DML语言操作
1、查看表中行数
----效率低 select count(*) from student ----效率高 select count(1) from student
2、取出表中对应列不存在重复数据的记录
select stuName,stuAge from student group by stuName,stuAge having(count(stuName||stuAge)<2)
四、事物控制语言(TCL)
1、commit:提交事物;
2、rollback:回滚事物;
3、savepoint:在事物中创建存储点
五、数据控制语言
1、创建表
--oracle没有自增 因此创建一个序列,在插入数据的时候,将序列插入到定义的主键当中 create sequence stu_id; create table student( id number primary key, name varchar2(20), age number ); insert into student(stu_id.nextval,‘张三‘,10);
2、添加约束(与mysql相同)
3、向表中添加列
alter table student add(address varchar2(20),email varchar2(20));
4、删除列
alter table test1 drop column name;
5、修改一个字段
alter table test1 modify (name varchar2(16) default ‘unknown’);
6、分页
select * from( select a.*,rownum x from( select * from goods )a ) where x>2 and x<=4
以上是关于在oracle数据库表中没有添加rowid字段为啥会出现的主要内容,如果未能解决你的问题,请参考以下文章
oracle数据库表中用Edit data 打开表,每张表都有一个相同字段rowid,但是表结构里面没有这个字段rowid字段
关于ORACLE 1410:invalid ROIWD,然后借着机会学习了一波ROWID。