oracle:表、列、約束等操作,table,constraint,column


創建表的語法

CREATE [GLOBAL TEMPORARY] TABLE table_name(
  column_name type [CONSTRAINT constraint_def DEFAULT default_exp]
 [,column_name type [CONSTRAINT constraint_def DEFAULT default_exp]…]
)
[ON COMMIT {DELETE| PRESERVE }ROWS]
TABLESPACE table_space;

GLOBAL TEMPORARY 說明該表為臨時表。行的有效期有 ON COMMIT 子句決定。臨時表對於說有會話都可見,但是這些行則是特定於某個會話的。

constraint_def 指定了對某個列的約束定義,可以用於刪除指定的約束或重復使用該約束。

ON COMMIT 控制臨時表中行的有效期。DELETE 說明這些行在事務的末尾要被刪除。 PRESERVE說明這些行在會話的末尾要被刪除。如果沒有指定ON COMMIT ,默認為 DELETE

table_space 為該表指定表空間,如果沒有指定,該表會被存儲在該用戶的默認表空間中。

 

獲得有關表的信息

可以直接DESCRIBE

DESC[RIBE] table_name;

可以通過數據字典

SELECT * 
FROM user_tables
WHERE 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_comments
WHERE table_name='xxx';

SELECT *
FROM user_col_comments
WHERE table_name='xxx'; 

獲得表中的列的信息

SELECT *
FROM user_tab_columns
WHERE table_name='xxxx';

 添加列

ALTER TABLE table_name
ADD column_name type;

重命名列

ALTER TABLE table_name
RENAME COLUMN column_old_name TO column_new_name; 

修改列 

ALTER TABLE table_name
MODIFY column_name type;

如果一個表中沒有任何行或列為空值,可以將表列修改為任意一種數據類型,tpye 為數據類型。

修改列的默認值 

ALTER TABLE table_name
MODIFY column_name DEFAULT xxxx;

 刪除列

ALTER TABLE table_name
DROP COLUMN column_name;

對列添加約束 

 添加CHECK 約束

ALTER TABLE table_name
ADD CONSTRAINT constraint_name
CHECK ( column_name IN ('xxx','xxxx'));
[or CHECK ( column_name >0)]

 

 

 添加一個約束,表中現有的行一定要符合這個約束條件。

添加NOT NULL 約束

CREATE TABLE table_name
MODIFY column_name [CONSTRAINT constraint_name] NOT NULL;

 

 NOT NULL 是用MODIFY 添加的, 上述[]是為這個約束添加一個名字。

添加FOREIGN KEY約束

ALTER TABLE table_name
DROP COLUMN column_name;

ALTER TABLE table_name
ADD [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_name
ADD CONSTRAINT constraint_name UNIQUE(column_name);

 

刪除約束

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

 

禁用約束

默認情況下,約束在創建是啟動,可以再創建時禁用約束。

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE(column_name) DISABLE;

 

 

啟動約束、禁用約束

ALTER TABLE table_name
{ENABLE|DISABLE } CONSTRAINT constraint_name;

 

啟動約束時表中數據必須滿足約束條件,通過制定 ENABLE NOVALIDATE 可以選擇只對新數據應用某個約束。

ALTER TABLE table_name
ENABLE NOVALIDATE CONSTRAINT  constraint_name;

 

約束默認情況下是 ENABLE VALIADTE;

延時約束

在事務被提交是強制執行的約束。在添加約束是指定 DEFERRABLE ,約束添加后不能修改,只能通過刪除重新添加。有兩種標識,

INITIALLY INNEDIATE :每次向表中添加數據、修改表的數據或從表中刪除數據是都檢測則個約束。

INITALLY DEFERRED :只在有事務被提交是,才檢測這個約束。

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE(column_name) DEFERRABLE INITIALLY DEFERRED;

 

獲得有關約束的信息

SELECT *
FROM user_constraints
WHERE table_name = 'xxx';

可以通過表 all_constraints 獲得所有可以訪問的約束信息。

獲得有關列的約束的信息

SELECT *
 FROM user_con_columns
WHERE table_name ='xxx';

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM