標籤:
獲得有關表的資訊
可以直接DESCRIBE
DESC[RIBE] table_name;
可以通過資料字典
SELECT * FROM user_tablesWHERE table_name =xxxx;[or WHERE table_name IN (‘xxxx‘,‘xxxx‘)]
重新命名表
RENAME table_old_name TO table_new_name;
截斷表
刪除表中的所有行,並重設表的儲存空間,表的表名列屬性等會保留。
TRUNCATE table_name;
刪除表
DROP TABLE table_name;
向表、列添加註釋
COMMENT ON TABLE table_name IS ‘xxxxx‘;COMMENT ON COLUMN table_name.column_name IS ‘xxxx‘;
獲得表、列的資訊
SELECT * FROM user_tab_commentsWHERE table_name=‘xxx‘;SELECT *FROM user_col_commentsWHERE table_name=‘xxx‘;
獲得表中的列的資訊
SELECT *FROM user_tab_columnsWHERE table_name=‘xxxx‘;
添加列
ALTER TABLE table_nameADD column_name type;
重新命名列
ALTER TABLE table_nameRENAME COLUMN column_old_name TO column_new_name;
修改列
ALTER TABLE table_nameMODIFY column_name type;
如果一個表中沒有任何行或列為空白值,可以將表列修改為任意一種資料類型,tpye 為資料類型。
修改列的預設值
ALTER TABLE table_nameMODIFY column_name DEFAULT xxxx;
刪除列
ALTER TABLE table_nameDROP COLUMN column_name;
對列添加約束
添加CHECK 條件約束
ALTER TABLE table_nameADD CONSTRAINT constraint_nameCHECK ( column_name IN (‘xxx‘,‘xxxx‘));[or CHECK ( column_name >0)]
添加一個約束,表中現有的行一定要符合這個約束條件。
添加NOT NULL 約束
CREATE TABLE table_nameMODIFY column_name [CONSTRAINT constraint_name] NOT NULL;
NOT NULL 是用MODIFY 添加的, 上述[]是為這個約束添加一個名字。
添加FOREIGN KEY約束
ALTER TABLE table_nameDROP COLUMN column_name;ALTER TABLE table_nameADD [CONSTRAINT constraint_name]column_name REFERENCES table_name1(column_name1) [ON DELETE {CASCADE | SET NULL} ];
通常需要先刪除該列然後通過添加列時吧FOREIGN KEY 一起添加。
ON DELETE CASCADE 為串聯刪除。
ON DELETE SET NULL 為外鍵被刪除時該位置設 NULL。
添加UNIQUE 約束
ALTER TABLE table_nameADD CONSTRAINT constraint_name UNIQUE(column_name);
刪除約束
ALTER TABLE table_nameDROP CONSTRAINT constraint_name;
禁用約束
預設情況下,約束在建立是啟動,可以再建立時禁用約束。
ALTER TABLE table_nameADD CONSTRAINT constraint_name UNIQUE(column_name) DISABLE;
啟動約束、禁用約束
ALTER TABLE table_name{ENABLE|DISABLE } CONSTRAINT constraint_name;
啟動約束時表中資料必須滿足約束條件,通過制定 ENABLE NOVALIDATE 可以選擇只對新資料應用某個約束。
ALTER TABLE table_nameENABLE NOVALIDATE CONSTRAINT constraint_name;
約束預設情況下是 ENABLE VALIADTE;
延時約束
在事務被提交是強制執行的約束。在添加約束是指定 DEFERRABLE ,約束添加後不能修改,只能通過刪除重新添加。有兩種標識,
INITIALLY INNEDIATE :每次向表中添加資料、修改表的資料或從表中刪除資料是都檢測則個約束。
INITALLY DEFERRED :只在有事務被提交是,才檢測這個約束。
ALTER TABLE table_nameADD CONSTRAINT constraint_name UNIQUE(column_name) DEFERRABLE INITIALLY DEFERRED;
獲得有關約束的資訊
SELECT *FROM user_constraintsWHERE table_name = ‘xxx‘;
可以通過表 all_constraints 獲得所有可以訪問的約束資訊。
獲得有關列的約束的資訊
SELECT * FROM user_con_columnsWHERE table_name =‘xxx‘;
Oracle表、列、約束的操作