DDL表结构修改

  *1)创建表
   create table 表名(
    字段名 类型,
    ....
   );
 
  //以现有表复制一个新表
  create table j012 as
  select id,name,salary from j010 where 1<>1;
  2)删除表
   drop table 表名;//删除,放入回收站
   drop table 表名 purge;//直接删除,不放入回收站
 
 *3)修改表结构
   a.添加一列字段
    alter table 表名 add (字段名 类型);
 
    //向j014表中添加一列sex
    alter table j014 add (sex char(1));
 
   b.修改一列字段
  可以修改类型、大小、是否允许为空,不能修改字段名
   alter table 表名 modify (字段名 类型);
 
   //将sex字段大小改为3,不允许为空
   alter table j014 modify
    (sex char(3) not null);
   //取消not null约束限定
   alter table j014 modify
    (sex char(3) null);
 
   提示:在修改原表的类型、大小、是否允许为空时,
      由于表中数据不符合规则,会导致语句失败。
 
  c.删除一列字段
     alter table 表名 drop column 字段名;
    //删除j014表中的age列
    alter table j014 drop column age;
 
  *4)设置字段默认值
    create table j015(
     id number(7) not null,
     name varchar2(20),
     salary number(7,2) default 10000,
     login_time timestamp default systimestamp);
 
//不指定salary和login_time,会采用默认值
insert into j015(id,name) values(101,'scott');
//salary采用指定的值,login_time采用默认值
insert into j015(id,name,salary)
   values(102,'tiger',5000);
//salary采用指定的6000,login_time采用指定的null
insert into j015(id,name,salary,login_time)
   values(103,'bob',6000,null);
 
  提示:字段默认值设置,只在不指定字段时有效,
  如果插入时指定了值,会采用指定值,即使null
  也会写入,不会采用默认值。
 
  5*)修改表名称
    rename 表名 to 新表名;
    //将表j015改为s015
    rename j015 to s015;
 
   b.查看表结构
     desc 表名;
 
   c.删除表结构
     drop table 表名;//将表删除放入回收站
     drop table 表名 purge;//将表直接删除不放入回收站
 
   d.恢复表结构和数据
     flashback table 表名 to before drop;
posted @ 2016-05-16 11:19  YunMan  阅读(2069)  评论(0编辑  收藏  举报