ORACLE 建立sql
阿新 • • 發佈:2020-08-11
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 toPUBLIC;
五.修改表的欄位
alter table 表名 modify 欄位名 varchar(100);
--這裡需要注意分兩種情況 ---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;
總結:
-
-
當欄位沒有資料或者要修改的新型別和原型別相容時,可以直接modify修改。
-
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 );