6. 移除,更名,清除Table

移除表格

移除(Drop)表格。語法範例如下:
DROP TABLE TEST.TABLE_NAME;
如果移除(Drop)的表格與別的表格有Primary key和Foreign key的關係必須加上CASCADE CONSTRAINTS,加上CASCADE CONSTRAINTS會移除(Drop)一個以上的表格,因此當要移除(Drop)某一個物件時最好事先不要加上CASCADE CONTRAINS如果不行,確認是否有有Foreign key。CASCADE CONSTRINTS語法範例如下:
DROP TABLE TEST.TABLE_NAME CASCADE CONSTRINTS;
注意如果移除(Drop)索引(Index)加上CASCADE CONSTRAINTS時會連的Table一起移除(Drop)掉,因為索引(Index)跟Table有相依的關係。

將表格與欄位更名
表格更名(Rename)。語法範例如下:
ALTER TABLE TEST_TABLE RENAME TO TEST_TABLE01;
欄位更名(Rename)。語法範例如下:
ALTER TABLE TEST_TABLE RENAME COLUMN COLUMN01 TO COLUMN05;
注意事項如下
  • 如果有其他的使用者正在使用此表格,是無法執行更名(Rename)的動作。
  • 執行更名(Rename)的動作時使用者是無法使用此表格。
  • 建議使用物件擁有帳號執行執行更名(Rename)的動作。

清除表格

清除(Truncate)的動作是刪除(Delete)表格上所有的資料,而且會將此表格所使用過後的空間全部釋放出來,也就是說會把所有的空間都Deallocae,除了MAXEXTENT參數所設的Extent數量,也就是說當某一個表格佔有20個EXTENT時,而此表格的MAXEXTENT參數是設5,因此就會保留5個EXTENT,但此表格High-Water Mark就會降低到第一個資料區塊(Data Block)。語法範例如下:
TRUNCATE TABLE TEST.TABLE_NAME;
清除(Truncate)的動作有兩種方式:
  • Default:Default是當你下了清除(Truncate)的時,是先移除(Drop)表格在重建,也就是說會先把所有的空間釋放之後再重建。
  • Reuse:Reuse是將資料清掉之後保留原來的空間,假設一個擁有20個擴充區段(Extent)的表格,當執行truncate reuse指令會保留原來的空間,也就是說truncate reuse除了將資料清掉還會降低 High-Water Mark,這對常常需要清空再新增資料進去的表格就不需要反覆的重新擴增Extent。語法範例如下:
TRUNCATE TABLE TEST.TABLE_NAME REUSE;
注意事項如下
  • 清除(Truncate)的動作是沒有條件句可以下的,所以一執行就是表格裡面的資料全清空。
  • 清除(Truncate)的動作是DDL,因此無法復原(Rollback) 。
  • 清除(Truncate)的動作會使此表格上的索引(Index)也沒有了。
  • 如果跟別的表格有關聯的關係,必須先拿掉Foreign key。

沒有留言:

張貼留言