Oracle数据库表

来源:互联网 发布:淘宝店铺资料填写 编辑:程序博客网 时间:2024/06/05 19:00

  在Oracle中,有多种类型的表,每种表都有不同的特性。可能能使处理速度更快、磁盘占用空间更少。

  一般的表是指关系表。也可以是对象表,通过用户定义的数据类型生成,临时表用于存储某个事务或者会话的临时数据。

Oracle常用内置数据类型:                                                                                                                                

1.字符类型

char数据类型,用于存储固定长度的字符串。当值的长度未达到设定长度时,oracle自动填充空格。

varchar2数据类型,用于存储变长的字符串。按照实际长度存储数据,不会填充空格。在多数时候,使用varchar2,而不使用char。

2.数值类型

number,具有精度(precision)和范围(scale)。精度指所有数字的个数。范围是指小数的位数。如number(5,2),5.678123,实际上存储的值为5.69

3.日期时间类型

date,默认日期和时间格式由nls_date_format指定,默认DD-MM-YY

4.lob类型,存放大型、未被结构化的数据。最大128MB。

blob:存储二进制对象,包括图像、音/视频文件等。

clob:存储字符串格式的大型对象。oracle首先转换成unicode格式的编码,再存储。

bfile:存储二进制格式文件。字段仅保存二进制文件的指针,并且是只读,不能通过数据库修改。

5.rowid类型

rowid,伪列类型,表示每条记录的物理地址。因此利用rowid访问数据的速度最快。

 

oracle创建表:

create table table_name(

);

也可以

create table table_name

as select  *  from  other_table_name;

 

数据库表的特性决定了系统如何创建表、在磁盘上如何存储、使用时如何执行等。用4个常用参数来说明

1.存储参数

针对本地化管理的表空间,盘区管理为自动时,可以使用storage子句指定initial,next,minextents。只有initial起作用,表示设置表分配的数据段初始化盘区大小。单位为kb或mb。

create table table_name(

)tablespace tablespace_name

storage(initial 256k);

2.数据块管理参数

pctfree和pctused参数。若段管理方式为手动管理segment space management manual,则可设置此二参数。pctfree默认为10。若设置过高,造成磁盘浪费,若太低,则可能造成数据块太小,无法容纳一行记录而产生迁移记录和链接记录。

pctfree和pctused的值,一般<=100,一般来说,二者的和与100的差值越大,存储效率就越高。

一般,当update多时,pctfree大点,pctused小点,推荐20和40。当insert和delete多时,推荐5和60。

create table table_name(

)tablespace tablespace_name

storage(initial 256k)

pctfree 20

pctused 40;

initrans参数。指定一个数据块所允许的并发事务数目。当一个事务访问一个数据块,就会在该数据块头部保留一个条目,当事务结束,就会删除该条目。

oracle分配的initrans个事务条目空间是永久的。当数据块的该空间满了后,再有事务访问此数据块时,会在空闲去保留该条目,这部分空间是动态的。

create table table_name(

)tablespace tablespace_name

storage(initial 256k)

pctfree 20

pctused 40

initrans 10;

3.重做日志参数

在创建表时,使用nologging,则对该表进行DDL操作时,不会产生日志,但仍会记录DML操作。

使用nologing,可以节省日志文件的空间,并减少创建表的时间,但是不能通过恢复的操作来恢复丢失的数据。

create table table_name(

)tablespace tablespace_name

storage(initial 256k)

pctfree 20

pctused 40

initrans 10

nologging;

4.缓存参数

cache参数。在创建表时,对于小又常用的,可以使用cache子句。

 

 

维护数据库表:                                                                                                                                  

1.增加、删除字段

alter table test add (name varchar2(50));

alter table test drop column name;

alter table test drop column (name,age);

删除大型表的字段时,可能费时。

2.修改字段

alter table test modify name varchar2(60);

在修改字段时,注意:从一种数据转为兼容性数据,且长度只能变长。但当数据库中没数据时,毋须注意前两点。

3.重命名表

alter table test rename to test_new;

4.修改表空间

alter table test move to tablespase tsp2_new 

5.修改存储参数

alter table test pctfree 25 pctused 45

6.删除表

drop table test [cascade constraints];

[cascade constraints] 表示同时删除约束、视图和触发器。

一般来说,当删除表时,没有被实际删除,只是在数据字典中除名,并放到了回收站,仍占有空间。可以通过flashback table还原。

查看表示否在回收站

select object_name,original_name from recyclebin where original_name='test'

还原表

flashback table test to before drop;

7.修改表状态

改为只读READ ONLY状态,不能进行DML和某些DDL。

alter table test read only;

11g以前若只读,只能将表空间或者整个数据库置为只读。

置为可读写

alter table test read write;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击