ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Table

Table

原创 Linux操作系统 作者:golden_zhou 时间:2011-08-05 16:05:53 0 删除 编辑
在可以的情況下,將Null列放置在後面,以節約存儲空間

需要注意,如果使用了long或者long raw類型,那麼他們的數據總是放在行的尾部,如果使用了LOB類型並且該別的數據長度超過4000個字節,那麼該列的數據會存放到相應的LOB段中.

char(10 byte)與char(10 char)的區別
char(10 byte)表示該欄位中只能保存最多10字節的數據,並且佔用空間為10字節,無論是否真正保存這麼多的數據
char(10 char)表示該欄位中只能保存最多10個字符的數據,不管是英文還是中文,只要數量不超過10即可.
varchar2(10 byte)與varchar(10 char)的區別
用於定義變長的字符串,其他區別類似于上面.


pctfree:用於指定數據塊內為update操作所預留空間的百分比,當數據塊剩餘空間低於pctfree時,不會在該數據塊中繼續插入數據.合理設置該值,可以防止出現行遷移.
pctused:用於指定數據塊上可以重新插入數據的已用空間百分比,當數據剩餘空間達到pctfree時,不會在該數據塊中繼續插入數據,刪除部份數據后,如果數據實際佔用空間還位於pceused上,則仍然不能插入數據.僅當數據佔用比例低於pctused時,才能在該數據塊上重新插入數據.
pctfree+pctused<1

臨時表用於存放會話或事務的私有數據.建立臨時表之後,表結構會一直存在,數據只有在當前事務或者會話中才有效.在臨時裱上執行DML語句時,不會加鎖,也不會將數據變化寫到重做日誌.

臨時表分為兩類:事務臨時表和會話臨時表.

事務臨時表是指數據只在當前事務內有效的臨時表.如果建立臨時表的時候沒有指定on commit選項,則默認為事務臨時表,通過指定on commit delete rows選項,也可以指定事務臨時表.當使用commit或者rollback結束事務之後,該臨時表中的數據會被清除.
會話臨時表是數據只在當前會話中有效的臨時表.建立臨時表時,通過使用on commit preserve rows選項,可以指定會話臨時表.使用會話臨時表時,如果使用commit提交事務,那麼其數據仍然可以查詢,但是關閉會話之後,Oracle會自動清除臨時數據.


重新組織表:
當使用alter table重新組織表時,還可以使用tablespace選項將表移動到其他表空間.
alter table tablename move tablespace tablespacename;
表示將表移動到另外一個表空間.
需要注意.執行了alter table命令重新組織表時,rowid會發生變化,從而導致表的所有索引轉變為無效狀態,所以在重新組織表之後必須重新建立索引.

修改表欄位定義:
alter table tablename modify columnname varchar2(15 byte);

重命列名:
alter table tablename rename column oldcolumnname to newcolumnname;

添加列:
alter table tablename add columnname varchar2(15 byte);

刪除列:
alter table tablename drop column columnname; ---刪除一個欄位
alter table tablename drop (column1,column2); ---刪除2個欄位

使用unused選項刪除列:
如果表包含大量數據,刪除列的時間很長.在這種情況下,如果確定某些表列不再需要,應該首先將表列標記為unused狀態,然後在空閒階段刪除表列.
使用alter table ...set unused column選項標記列為unused,使用alter table ... drop unused column刪除unused列.
alter table tablename set unused column columnname;
alter table tablename drop unused columns checkpoint 1000;表示每刪除1K筆 就發出檢查點.

如果在刪除表列中出現例程失敗,那麼重啟數據庫之後使用continue選項可以繼續刪除操作.
alter table tablename drop columns continue checkpoint 1000;


建立索引表: 使用索引表會降低全表掃描速度.
create table tablename(id number(6) constraint pk_name primary key,xx varchar2(15byte),remark varchar2(20 byte))
organization index tablespace tbs_name1
pctthreshold 20 including remark
overflow tablespace tbs_name2;

organization index用於指定索引表,而tablespace指定主鍵索引所在的表空間.
pctthreshold 用於指定數據塊中為鍵列和部份非鍵列所預留的百分比.如果數據塊剩餘空間低於pctthreshold 設置,Oracle會將其他數據存放到溢出段.
including column:用於指定數據被存放到溢出段的起始列.
overflow tablespace:用於指定溢出段所在的表空間.

添加註釋:
comment on table schema.tablename is 'xxxx';

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25198367/viewspace-704237/,如需转载,请注明出处,否则将追究法律责任。

上一篇: profile
下一篇: index
请登录后发表评论 登录
全部评论

注册时间:2011-03-09

  • 博文量
    238
  • 访问量
    301760