創建表的語法
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';
轉載地址:http://www.cnblogs.com/Azhu/archive/2012/04/15/2450179.html