Oracle表的创建修改及增删改查-DML操作

2014-11-24 17:43:04 · 作者: · 浏览: 0

表 TABLE包括:分区表,TABLE PARTITION 簇CLUSTER 索引表INDEX-ORGANIZED TABLE(IOTs)




标量数据类型:


varchar2 最大值4000字符 变长字符型数据


char 最大值2000字符,定长字符型数据


date 日期型数据,取值范围从公元前4712.1.1到9999.12.31 timestamp 精确到毫秒


number 数字型数据,


clob 用于在数据库中存储定长字节的大数据对象,如WORD文件。字符型大对象最大4G


blob 存储大的无结构二进制对象,如照片或幻灯片。


bfile 用于在数据库外的操作系统文件中存储大的无结构的二进制对象,如电影


raw 在数据库直接存储二进制数据。最大长度2000个字节


LOGN LONG RAW,ORACLE 8 劈头盖脸数据库中存储二进制图像文本等。



在用户向表中插入一行数据时,ORACLE会自动在这一行数据加上一个ROWID,每行都有一个唯一ROWID,ORACLE利用ROWID定位数据行。并不显式存储为一列的值,是访问一个表中行的最快机制。


000000 FFF BBBBBB RRR


数据对象号 相应文件号块号 行号


数据对象号,被赋予每一个对象,在一个数据库中是唯一的。相对文件号,对同一个表空间中每一个文件是唯一的。块号,为相对文件中包含数据行的块的位置。行号,标识块头中行目录位置。


SQL> select ename,rowid from scott.emp;


ENAME ROWID


---------- ------------------


SMITH AAAR3sAAEAAAACXAAA


ALLEN AAAR3sAAEAAAACXAAB


WARD AAAR3sAAEAAAACXAAC


JONES AAAR3sAAEAAAACXAAD


SMITH行的数据对象号为AAAR3s,相对文件号AAE,块号AAAACX,行号AAA


#############################


ORACLE数据行结构


行头 row header,存储行中列数,迁移信息,行锁状态。


行数据,一系列列长和列值组成


列长 columnlength,一般需要一个字节,列长度超过250字节,列长为3个字节


列值 columnvalue,列的实际值紧接列长字节后存放。


创建表时,应将不同表放在不同表空间中。


使用本地管理表空间以避免碎片,在表中使用若干标准EXTENT尺寸减少表空间碎片。



create table语句建表 要指明表名,列名,列数据类型,列宽度,是否有默认值


用查询语句做子句建表。此时新建表的内容将是所查询表的相应列的内容。


create table t2 as select ename name,salsalary from emp;


create table t2 as select * from emp;


用假条件,只对立表结构,不要数据


create table t3(c1,c2,c3) as selectename,empno,sal from emp where 9=1;


手动创建一个表,有五个列,数据类型4位数字,20个变长,2位定长,生日数据类型为日期,奖金最多7位,有两位小数,即最多9999.99


create table student(xh number(4),xmvarchar2(20),sex char(2),birthday date,sal number(7,2));



修改列的数据类型、字长


alter table t2 modify(name char(4));


修改表的名称,表的OWNER或SYSDBA修改


rename t2 to t_2;


修改列名称


alter table t3 rename column c1 to name;


表注释和列注释


修改一列:


alter table emp4 modify test varchar2(20);


删除一列:


alter table emp4 drop column test;



相关阅读: