ORACLE 创建sql

1.新建表

-- Create table
create table TC_BUDGETMOVEINFO_FILE
(
  ta_01 VARCHAR2(50 BYTE) not null,
  ta_02 VARCHAR2(50 BYTE) not null,
  ta_03 VARCHAR2(50 BYTE) not null,
  ta_04 VARCHAR2(50 BYTE) not null,
  ta_05 VARCHAR2(50 BYTE) not null,
  ta_06 VARCHAR2(50 BYTE),
  ta_07 VARCHAR2(50 BYTE),
  ta_08 VARCHAR2(50 BYTE),
  ta_09 VARCHAR2(50 BYTE),
  ta_10 VARCHAR2(50 BYTE),
  ta_11 VARCHAR2(50 BYTE),
  ta_12 VARCHAR2(400 BYTE),
  ta_13 VARCHAR2(50 BYTE),
  ta_14 VARCHAR2(50 BYTE),
  ta_15 VARCHAR2(100 BYTE),
  ta_16 VARCHAR2(50 BYTE),
  ta_17 VARCHAR2(100 BYTE),
  ta_18 VARCHAR2(50 BYTE),
  ta_19 VARCHAR2(100 BYTE),
  ta_20 VARCHAR2(100 BYTE),
  ta_21 VARCHAR2(100 BYTE),
  ta_22 VARCHAR2(100 BYTE),
  ta_23 VARCHAR2(100 BYTE),
  ta_24 VARCHAR2(100 BYTE),
  ta_25 VARCHAR2(100 BYTE),
  ta_26 VARCHAR2(100 BYTE),
  ta_27 VARCHAR2(100 BYTE),
  ta_28 VARCHAR2(100 BYTE),
  ta_29 VARCHAR2(100 BYTE),
  ta_30 VARCHAR2(100 BYTE),
  ta_31 VARCHAR2(100 BYTE),
  ta_32 VARCHAR2(100 BYTE),
  ta_33 VARCHAR2(100 BYTE),
  ta_34 VARCHAR2(100 BYTE),
  ta_35 VARCHAR2(100 BYTE),
  ta_36 VARCHAR2(100 BYTE),
  ta_37 VARCHAR2(100 BYTE),
  ta_38 VARCHAR2(100 BYTE),
  ta_39 VARCHAR2(100 BYTE),
  ta_40 VARCHAR2(100 BYTE),
  ta_41 VARCHAR2(100 BYTE)
)
tablespace DBS1
  pctfree 10
  initrans 1
  maxtrans 255;

  二.给对应的列,列注解

comment on column TC_BUDGETMOVEINFO_FILE.ta_01   is '项次';

对应的正则表达式为:根据表结构来存储数据正则匹配
(ta_\d\d)(  )(\S.+) comment on column TC_BUDGETMOVEINFO_FILE.$1  is '$3';

三.给表添加主键

alter table TC_BUDGETMOVEINFO_FILE --表名
  add constraint TC_BUDGETmove_PK primary key (TA_01, TA_02, TA_03, TA_04) --对应的主键名称
  using index --(注意上面这块,主键名称是这个用户下面是唯一的,请注意,例如TC_BUDGETmove_PK唯一)
  tablespace DBS1
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

四.表的授权

grant select, insert, update, delete, references, alter, index on TC_BUDGETMOVEINFO_FILE to PUBLIC;

五.修改表的字段

  

5.1 修改表的字段大小

alter table 表名 modify 字段名 varchar(100);

5.2 修改表的字段类

--这里需要注意分两种情况
---1.修改表的该字段,列值为空
    alter table 表名 modify (字段名 nvarchar2(20));--可以Number,Date
    (注意这块char 和varchar2 即使有数据也可以相互转化)
---2.修改表的该字段,列值不为空
    字段有数据,则改为varchar2(40)执行时会弹出:“ORA-01439:要更改数据类型,则要修改的列必须为空”,这时     要用下面方法来解决这个问题:
    1.修改原有列名
    alter table 表名 rename column name to name_tmp; --原列名改为原列名+tmp,name为表中的一个属性
    2.新增列名
    alter table 表名 add name varchar2(40);
    3.更新数据
    update 表名 set name=trim(name_tmp);
    4.删除临时字段
    alter table 表名 drop column name_tmp;

总结:

  1. 创建表,需要根据格式,要有规范

  2. 当字段没有数据或者要修改的新类型和原类型兼容时,可以直接modify修改。

  3. 当字段有数据并用要修改的新类型和原类型不兼容时,要间接新建字段来转移

CREATE  TABLE  SEOrder(
          FInterId  INT NOT  NULL ,
          FBillNo  VARCHAR(50)  NOT  NULL,
        KKK  VARCHAR(50),
          FBillerID  INT  DEFAULT(0),
          FDepart  INT  NOT  NULL
 ) 
alter table SEOrder add constraint SEOrder_PK primary key (FInterId);
ALTER  TABLE  SEOrder ADD  FDate  VARCHAR(50)
ALTER  TABLE  SEOrder    DROP  COLUMN  KKK;
ALTER  TABLE  SEOrder  MODIFY    (FDate  DATE );

 

posted on 2020-08-11 19:59  chenzhe1  阅读(434)  评论(0编辑  收藏  举报

导航