Oracle管理表 - ALTER TABLE语句

  修改表语法规范:

ALTER TABLE T_NAME ADD/MODIFY/DROP [COLUMN......]
  1. 添加新列;
  2. 修改现有列;
  3. 为新列定义默认值;
  4. 删除列。

预备表

create table students 
(
id        number(6)     not null,
name      varchar2(30),
gender    char(1),
birthday  varchar2(10)
);

添加新列

-- 给students表添加年级grade和班级class两个字段
alter table students add (grade number(6) not null);
alter table students add (class number(6) not null);

-- 或者
alter table students add 
(
grade number(6) not null,
class number(6) not null
);

  注意:当表已有数据的时候,添加的新字段不能指定为not null;但如果新增字段指定了默认值,则可以指定为not null 。

修改列

-- 将性别一列修改为varchar2(3)
alter table students modify (gender varchar2(3));

删除列

-- 删除一个列
alter table students drop column age;

-- 删除多个列
alter table students drop (school, age);

  删除列的时候注意以下几点:

  • 要删除的列可以包含数据,也可以是null。
  • 使用alter table删除列时,每次尽力删除一个列;
  • 表在更改之后,必须至少还剩下一个列;
  • 列一旦被删除,就不能恢复。

SET UNUSED

  可以使用SET UNUSED选项将一个或多个列标记为不可用。

alter table students set unused (grade, class);
-- 或者
alter table students set unused column grade;
alter table students set unused column class;

  可以使用DROP UNUSED COLUMNS删除被标记为不可用的列。

alter table students drop unused columns;

  set unused列之后,并不是将该列数据立即删除,而是被隐藏起来,物理上还是存在的。
  如果表数据量很大,drop一个列就会占用很长时间和资源。set unused的作用就是为了在cpu、内存等资源不充足的时候,先做上unused标记,再等数据库资源空闲的时候用drop set unused删除。

更改表名

alter table students rename to stu;

给表添加备注

comment on table students is 'information of students';

给列添加备注

comment on column students.birthday is '出生年月';

删除表

  DDL(数据库定义语言)方法删除表的内容:

truncate table students;         

  truncate table这种删除又被称之为截断。 在功能上与不带 WHERE 子句的 DELETE 语句相同。

drop table students;

  drop table这种删除不是把表真正的删除了,而是把表改个名放到了回收站里 user_recyclebin。可以从回收站里恢复这张表。

flashback table students to before drop [rename to XXX];

  如果该表的名称已经被其他表使用,那么执行flashback table 恢复该表时则会报错,此时就应该利用起重命名。

  purge可以将表彻底清除,并且释放表所占用的空间。

drop table students;        -- 删除表students
purge table students;       -- 清除回收站里的students表,并释放空间
-- 或
drop table students purge;  -- 直接删除students表,不进回收站
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值