修改列定义
修改列定义包括修改列的类型,宽度,缺省值定义等。
语法: ALTER TABLE table MODIFY (column datatype [DEFAULT expr], ...);
例如:SQL>desc test1.emp_sa_rep;
SQL>alter table test1.emp_sa_rep modify (last_name VARCHAr2(30));
注意:
1.对有数据的列,修改后列宽度不能小于数据的长度。
2.一个表只能有一个 LONG 型的列,不能增加或修改出第二个 LONG 型的列。
3.如果更改数据类型为另一种非同系列类型,则列中数据必须为 NULL.
增加列
新增加的列总是排在列定义的最后。对有记录的行增加新列,新列默认取空值。
语法: ALTER TABLE table ADD(column datatype [DEFAULT expr], ...);
例如:为 test1.emp_sa_rep 表增加一列出生日期 birthday, 以系统当前时间 sysdate 作
为其缺省值:
SQL>ALTER TABLE test1.emp_sa_rep ADD (birthday DATE DEFAULT sysdate);
禁用列
被禁用列所占空间不会被释放,除非将该列删除。
禁用列语法:
ALTER TABLE table SET UNUSED (column , …… );
ALTER TABLE table SET UNUSED COLUMN column;
例如:禁用 test1.emp_sa_rep 表 birthday 列:
SQL>ALTER TABLE test1.emp_sa_rep SET UNUSED (birthday);
删除列
一次只能删除一列,列被删除后不能恢复,只能重建列。
删除列语法:ALTER TABLE table DROP (column);
删除禁用列将删除所有的禁用列,语法:ALTER TABLE table DROP UNUSED COLUMNS; 例如:删除 test1.emp_sa_rep 表的 salary 列:
SQL>ALTER TABLE test1.emp_sa_rep DROP (salary);
重命名表名和列名
重命名表语:ALTER TABLE tablename RENAME TO new_tablename;
重命名列语法:ALTER TABLE tablename RENAME COLUMN old_name TO new_name;
例:修改 test1.emp_sa_rep 表的 first_name 列名为 fname.
SQL>ALTER TABLE test1.emp_sa_rep RENAME COLUMN first_name TO fname;
修改 test1.emp_sa_rep 名为 sale_rep:
SQL>ALTER TABLE test1.emp_sa_rep RENAME TO sale_rep;
表的删除
删除一个表时,Oracle 将执行下列操作:
1.删除该表中所有记录;
2.从数据字典中删除该表定义;
3.删除与该表相关的所有索引和触发器;
4.删除对象移至回收站中,每个数据库用户都有自己的回收站 USER_RECYCLEBIN;
5.依赖于该表的数据库对象(视图、同义词、函数等)处于 INVALID 状态。
删除表语法:DROP TABLE table [ CASCADE CONSTRAINTS ] [PURGE];
当一张表在删除时使用了 PURGE 选项,将不会进入回收站而彻底删除,将无法进行闪回恢复。
例如:删除表 test1.sale_rep.
SQL>DROP TABLE test1.sale_rep;



