一、官档
11g:BOOK → Database SQL Language Reference → 12 SQL Statements: ALTER TABLE to ALTER TABLESPACE → ALTER TABLE二、修改表属性
- 给表增加注释
COMMENT ON TABLE table_name IS '<comment_text>';
- 修改表名
ALTER TABLE <表名> ADD (<字段名> <字段类型>); RENAME table_name_old TO table_name_new;
- 删除表
DROP TABLE <表名>;
三、修改列属性
- 添加列
ALTER TABLE <表名> ADD (<字段名> <字段类型>);
- 修改列名
ALTER TABLE <表名> RENAME COLUMN <字段名_old> TO <字段名_new>;
- 删除列
ALTER TABLE <表名> DROP COLUMN <列名>;
- 给列增加注释
COMMENT ON COLUMN <表名>.<列名> IS '<comment_text>';
- 设置列为不可用
ALTER TABLE <表名> SET UNUSED(<列名>);
- 修改列类型
ALTER TABLE <表名> MODIFY (<列名> <字段类型>);
四、修改约束
- 设置列不为空
ALTER TABLE <表名> MODIFY <字段名> NOT NULL;
- 添加唯一值约束
ALTER TABLE <表名> ADD CONSTRAINT UK_<字段名> UNIQUE(<字段名>);
- 添加主键约束
ALTER TABLE <表名> MODIFY <字段名> Primary Key;
- 删除列主键约束
ALTER TABLE <表名> DROP PRIMARY KEY;
- 添加检查约束
ALTER TABLE <表名> ADD CONSTRAINT CK_<字段名> CHECK(<限定内容>);
- 添加外键约束
如果你需要删除的数据被其他数据所参照,那么你应该决定到底希望oracle怎么处理那些参照这些即将要删除数据的数据的,你可以有三种方式:ALTER TABLE <表名> ADD CONSTRAINT FK_<表名缩写>_<字段名> FOREIGN KEY(<列名7>) REFERENCES <从表名>(<从表主键>) [on delete cascade/on delete set null];
- 禁止删除。这也是oracle默认的
- 将那些参照本值的数据的对应列赋空,这个需要使用on delete set null关键字
- 将那些参照本值的数据一并删除,这个需要使用on delete cascade关键字
alter table <表名>
rename constraint <constraint_old_name> to <constraint_new_name>;
删除约束
ALTER TABLE <表名> DROP CONSTRAINT <约束名>;
禁用外键约束
ALTER TABLE <表名>
DISABLE CONSTRAINT <约束名>;
启用外键约束
ALTER TABLE <表名>
ENABLE CONSTRAINT <约束名>;
删除级联约束
ALTER TABLE <表名>
DROP (pk,fk,col1) CASCADE CONSTRAINTS;