一.如果表中沒有資料:
直接這樣就可以了
alter table 表名 modify (欄位名 型別)
如 alter table student (id number(4));
二.如果原表中存在data那麼方法就大不相同了
alter table 表名 rename column 欄位名 to 欄位名1;
alter table 表名 add 欄位名 varchar2(30);
update 表名 set 欄位名 = cast(欄位名1 as varchar2(30));
alter table 表名 drop column 欄位名1;
下面是我pl/sql中 實際操作時執行的語句
*修改原欄位名*/
alter table xinfei_ims.t_dispatch_loading rename column receive_sheet_time to receive_sheet_time1;
alter table xinfei_ims.t_dispatch_loading add receive_sheet_time date;
update xinfei_ims.t_dispatch_loading set receive_sheet_time = cast(receive_sheet_time1 as date);
alter table xinfei_ims.t_dispatch_loading drop column receive_sheet_time1;
*修改原欄位名*/
alter table xinfei_ims.t_dispatch_loading rename column receive_sheet_time to receive_sheet_time1;
alter table xinfei_ims.t_dispatch_loading add receive_sheet_time date;
update xinfei_ims.t_dispatch_loading set receive_sheet_time = cast(receive_sheet_time1 as date);
alter table xinfei_ims.t_dispatch_loading drop column receive_sheet_time1;
但是這樣做會出現如果修改的是主鍵,修改後主鍵的位置會發生移動,會出現在最後一列,這樣就先建新表(按照需要的表結構),然後用insert into new_table select column1,column2... from old_table(或者insert into new_table(column1,column2...) select column1,column2... from old_table)就將原表中的值複製過去了,又保證列對應。但是如果資料較多的話執行的時間會比較一般sql要長,需要多等待一會。另外還要記得commit。
oracle中使用SQL遞迴語句
場景 常見的領導關係樹結構,知道某一節點id,要查出此節點的所有下級 直接下級和間接下級 此時需要使用sql遞迴語句。oracle中的遞迴語句 start with connect byprior 例子 pid id a b a c a e b b1 b b2 c c1 e e1 e e3 d d1...
Oracle中使用SQL語句修改字段型別
分兩種情況 1.表中沒有資料 alter table 表名 modify 欄位名 型別 eg alter table student id number 4 2.表中有資料 修改原欄位名 alter table 表名 rename column 欄位名 to 欄位名1 新增乙個和原欄位同名的字段 a...
ACCESS中使用SQL語句
以下sql語句在access xp的查詢中測試通過 建表 create table tab1 id counter,name string,age integer,date datetime 技巧 自增字段用 counter 宣告.欄位名為關鍵字的字段用方括號括起來,數字作為欄位名也可行.建立索引 ...